Don't use try or unwrap in examples. (#689)

Fixes #666.
diff --git a/src/net/tcp.rs b/src/net/tcp.rs
index 4e89b45..798f214 100644
--- a/src/net/tcp.rs
+++ b/src/net/tcp.rs
@@ -33,23 +33,32 @@
 ///
 /// ```
 /// # use std::net::TcpListener;
-/// # let _listener = TcpListener::bind("127.0.0.1:3454").unwrap();
+/// # use std::error::Error;
+/// #
+/// # fn try_main() -> Result<(), Box<Error>> {
+/// #     let _listener = TcpListener::bind("127.0.0.1:3454")?;
 /// use mio::{Events, Ready, Poll, PollOpt, Token};
 /// use mio::tcp::TcpStream;
 /// use std::time::Duration;
 ///
-/// let stream = TcpStream::connect(&"127.0.0.1:34254".parse().unwrap()).unwrap();
+/// let stream = TcpStream::connect(&"127.0.0.1:34254".parse()?)?;
 ///
-/// let poll = Poll::new().unwrap();
+/// let poll = Poll::new()?;
 /// let mut events = Events::with_capacity(128);
 ///
 /// // Register the socket with `Poll`
 /// poll.register(&stream, Token(0), Ready::writable(),
-///               PollOpt::edge()).unwrap();
+///               PollOpt::edge())?;
 ///
-/// poll.poll(&mut events, Some(Duration::from_millis(100))).unwrap();
+/// poll.poll(&mut events, Some(Duration::from_millis(100)))?;
 ///
 /// // The socket might be ready at this point
+/// #     Ok(())
+/// # }
+/// #
+/// # fn main() {
+/// #     try_main().unwrap();
+/// # }
 /// ```
 #[derive(Debug)]
 pub struct TcpStream {
@@ -441,22 +450,30 @@
 /// # Examples
 ///
 /// ```
+/// # use std::error::Error;
+/// # fn try_main() -> Result<(), Box<Error>> {
 /// use mio::{Events, Ready, Poll, PollOpt, Token};
 /// use mio::tcp::TcpListener;
 /// use std::time::Duration;
 ///
-/// let listener = TcpListener::bind(&"127.0.0.1:34254".parse().unwrap()).unwrap();
+/// let listener = TcpListener::bind(&"127.0.0.1:34254".parse()?)?;
 ///
-/// let poll = Poll::new().unwrap();
+/// let poll = Poll::new()?;
 /// let mut events = Events::with_capacity(128);
 ///
 /// // Register the socket with `Poll`
 /// poll.register(&listener, Token(0), Ready::writable(),
-///               PollOpt::edge()).unwrap();
+///               PollOpt::edge())?;
 ///
-/// poll.poll(&mut events, Some(Duration::from_millis(100))).unwrap();
+/// poll.poll(&mut events, Some(Duration::from_millis(100)))?;
 ///
 /// // There may be a socket ready to be accepted
+/// #     Ok(())
+/// # }
+/// #
+/// # fn main() {
+/// #     try_main().unwrap();
+/// # }
 /// ```
 #[derive(Debug)]
 pub struct TcpListener {
diff --git a/src/poll.rs b/src/poll.rs
index 67566c6..691c57f 100644
--- a/src/poll.rs
+++ b/src/poll.rs
@@ -89,38 +89,46 @@
 /// A basic example -- establishing a `TcpStream` connection.
 ///
 /// ```
+/// # use std::error::Error;
+/// # fn try_main() -> Result<(), Box<Error>> {
 /// use mio::{Events, Poll, Ready, PollOpt, Token};
 /// use mio::tcp::TcpStream;
 ///
 /// use std::net::{TcpListener, SocketAddr};
 ///
 /// // Bind a server socket to connect to.
-/// let addr: SocketAddr = "127.0.0.1:0".parse().unwrap();
-/// let server = TcpListener::bind(&addr).unwrap();
+/// let addr: SocketAddr = "127.0.0.1:0".parse()?;
+/// let server = TcpListener::bind(&addr)?;
 ///
 /// // Construct a new `Poll` handle as well as the `Events` we'll store into
-/// let poll = Poll::new().unwrap();
+/// let poll = Poll::new()?;
 /// let mut events = Events::with_capacity(1024);
 ///
 /// // Connect the stream
-/// let stream = TcpStream::connect(&server.local_addr().unwrap()).unwrap();
+/// let stream = TcpStream::connect(&server.local_addr()?)?;
 ///
 /// // Register the stream with `Poll`
-/// poll.register(&stream, Token(0), Ready::all(), PollOpt::edge()).unwrap();
+/// poll.register(&stream, Token(0), Ready::all(), PollOpt::edge())?;
 ///
 /// // Wait for the socket to become ready. This has to happens in a loop to
 /// // handle spurious wakeups.
 /// loop {
-///     poll.poll(&mut events, None).unwrap();
+///     poll.poll(&mut events, None)?;
 ///
 ///     for event in &events {
 ///         if event.token() == Token(0) && event.readiness().is_writable() {
 ///             // The socket connected (probably, it could still be a spurious
 ///             // wakeup)
-///             return;
+///             return Ok(());
 ///         }
 ///     }
 /// }
+/// #     Ok(())
+/// # }
+/// #
+/// # fn main() {
+/// #     try_main().unwrap();
+/// # }
 /// ```
 ///
 /// # Edge-triggered and level-triggered
@@ -257,20 +265,28 @@
 /// For example:
 ///
 /// ```
+/// # use std::error::Error;
+/// # fn try_main() -> Result<(), Box<Error>> {
 /// use mio::{Poll, Ready, PollOpt, Token};
 /// use mio::tcp::TcpStream;
 /// use std::time::Duration;
 /// use std::thread;
 ///
-/// let sock = TcpStream::connect(&"216.58.193.100:80".parse().unwrap()).unwrap();
+/// let sock = TcpStream::connect(&"216.58.193.100:80".parse()?)?;
 ///
 /// thread::sleep(Duration::from_secs(1));
 ///
-/// let poll = Poll::new().unwrap();
+/// let poll = Poll::new()?;
 ///
 /// // The connect is not guaranteed to have started until it is registered at
 /// // this point
-/// poll.register(&sock, Token(0), Ready::all(), PollOpt::edge()).unwrap();
+/// poll.register(&sock, Token(0), Ready::all(), PollOpt::edge())?;
+/// #     Ok(())
+/// # }
+/// #
+/// # fn main() {
+/// #     try_main().unwrap();
+/// # }
 /// ```
 ///
 /// # Implementation notes
@@ -603,6 +619,8 @@
     /// # Examples
     ///
     /// ```
+    /// # use std::error::Error;
+    /// # fn try_main() -> Result<(), Box<Error>> {
     /// use mio::{Poll, Events};
     /// use std::time::Duration;
     ///
@@ -616,8 +634,14 @@
     ///
     /// // Wait for events, but none will be received because no `Evented`
     /// // handles have been registered with this `Poll` instance.
-    /// let n = poll.poll(&mut events, Some(Duration::from_millis(500))).unwrap();
+    /// let n = poll.poll(&mut events, Some(Duration::from_millis(500)))?;
     /// assert_eq!(n, 0);
+    /// #     Ok(())
+    /// # }
+    /// #
+    /// # fn main() {
+    /// #     try_main().unwrap();
+    /// # }
     /// ```
     pub fn new() -> io::Result<Poll> {
         is_send::<Poll>();
@@ -703,15 +727,17 @@
     /// # Examples
     ///
     /// ```
+    /// # use std::error::Error;
+    /// # fn try_main() -> Result<(), Box<Error>> {
     /// use mio::{Events, Poll, Ready, PollOpt, Token};
     /// use mio::tcp::TcpStream;
     /// use std::time::{Duration, Instant};
     ///
-    /// let poll = Poll::new().unwrap();
-    /// let socket = TcpStream::connect(&"216.58.193.100:80".parse().unwrap()).unwrap();
+    /// let poll = Poll::new()?;
+    /// let socket = TcpStream::connect(&"216.58.193.100:80".parse()?)?;
     ///
     /// // Register the socket with `poll`
-    /// poll.register(&socket, Token(0), Ready::all(), PollOpt::edge()).unwrap();
+    /// poll.register(&socket, Token(0), Ready::all(), PollOpt::edge())?;
     ///
     /// let mut events = Events::with_capacity(1024);
     /// let start = Instant::now();
@@ -722,19 +748,25 @@
     ///
     ///     if elapsed >= timeout {
     ///         // Connection timed out
-    ///         return;
+    ///         return Ok(());
     ///     }
     ///
     ///     let remaining = timeout - elapsed;
-    ///     poll.poll(&mut events, Some(remaining)).unwrap();
+    ///     poll.poll(&mut events, Some(remaining))?;
     ///
     ///     for event in &events {
     ///         if event.token() == Token(0) {
     ///             // Something (probably) happened on the socket.
-    ///             return;
+    ///             return Ok(());
     ///         }
     ///     }
     /// }
+    /// #     Ok(())
+    /// # }
+    /// #
+    /// # fn main() {
+    /// #     try_main().unwrap();
+    /// # }
     /// ```
     pub fn register<E: ?Sized>(&self, handle: &E, token: Token, interest: Ready, opts: PollOpt) -> io::Result<()>
         where E: Evented
@@ -780,19 +812,27 @@
     /// # Examples
     ///
     /// ```
+    /// # use std::error::Error;
+    /// # fn try_main() -> Result<(), Box<Error>> {
     /// use mio::{Poll, Ready, PollOpt, Token};
     /// use mio::tcp::TcpStream;
     ///
-    /// let poll = Poll::new().unwrap();
-    /// let socket = TcpStream::connect(&"216.58.193.100:80".parse().unwrap()).unwrap();
+    /// let poll = Poll::new()?;
+    /// let socket = TcpStream::connect(&"216.58.193.100:80".parse()?)?;
     ///
     /// // Register the socket with `poll`, requesting readable
-    /// poll.register(&socket, Token(0), Ready::readable(), PollOpt::edge()).unwrap();
+    /// poll.register(&socket, Token(0), Ready::readable(), PollOpt::edge())?;
     ///
     /// // Reregister the socket specifying a different token and write interest
     /// // instead. `PollOpt::edge()` must be specified even though that value
     /// // is not being changed.
-    /// poll.reregister(&socket, Token(2), Ready::writable(), PollOpt::edge()).unwrap();
+    /// poll.reregister(&socket, Token(2), Ready::writable(), PollOpt::edge())?;
+    /// #     Ok(())
+    /// # }
+    /// #
+    /// # fn main() {
+    /// #     try_main().unwrap();
+    /// # }
     /// ```
     ///
     /// [`struct`]: #
@@ -829,23 +869,31 @@
     /// # Examples
     ///
     /// ```
+    /// # use std::error::Error;
+    /// # fn try_main() -> Result<(), Box<Error>> {
     /// use mio::{Events, Poll, Ready, PollOpt, Token};
     /// use mio::tcp::TcpStream;
     /// use std::time::Duration;
     ///
-    /// let poll = Poll::new().unwrap();
-    /// let socket = TcpStream::connect(&"216.58.193.100:80".parse().unwrap()).unwrap();
+    /// let poll = Poll::new()?;
+    /// let socket = TcpStream::connect(&"216.58.193.100:80".parse()?)?;
     ///
     /// // Register the socket with `poll`
-    /// poll.register(&socket, Token(0), Ready::readable(), PollOpt::edge()).unwrap();
+    /// poll.register(&socket, Token(0), Ready::readable(), PollOpt::edge())?;
     ///
-    /// poll.deregister(&socket).unwrap();
+    /// poll.deregister(&socket)?;
     ///
     /// let mut events = Events::with_capacity(1024);
     ///
     /// // Set a timeout because this poll should never receive any events.
-    /// let n = poll.poll(&mut events, Some(Duration::from_secs(1))).unwrap();
+    /// let n = poll.poll(&mut events, Some(Duration::from_secs(1)))?;
     /// assert_eq!(0, n);
+    /// #     Ok(())
+    /// # }
+    /// #
+    /// # fn main() {
+    /// #     try_main().unwrap();
+    /// # }
     /// ```
     pub fn deregister<E: ?Sized>(&self, handle: &E) -> io::Result<()>
         where E: Evented
@@ -898,6 +946,8 @@
     /// A basic example -- establishing a `TcpStream` connection.
     ///
     /// ```
+    /// # use std::error::Error;
+    /// # fn try_main() -> Result<(), Box<Error>> {
     /// use mio::{Events, Poll, Ready, PollOpt, Token};
     /// use mio::tcp::TcpStream;
     ///
@@ -905,9 +955,9 @@
     /// use std::thread;
     ///
     /// // Bind a server socket to connect to.
-    /// let addr: SocketAddr = "127.0.0.1:0".parse().unwrap();
-    /// let server = TcpListener::bind(&addr).unwrap();
-    /// let addr = server.local_addr().unwrap().clone();
+    /// let addr: SocketAddr = "127.0.0.1:0".parse()?;
+    /// let server = TcpListener::bind(&addr)?;
+    /// let addr = server.local_addr()?.clone();
     ///
     /// // Spawn a thread to accept the socket
     /// thread::spawn(move || {
@@ -915,28 +965,34 @@
     /// });
     ///
     /// // Construct a new `Poll` handle as well as the `Events` we'll store into
-    /// let poll = Poll::new().unwrap();
+    /// let poll = Poll::new()?;
     /// let mut events = Events::with_capacity(1024);
     ///
     /// // Connect the stream
-    /// let stream = TcpStream::connect(&addr).unwrap();
+    /// let stream = TcpStream::connect(&addr)?;
     ///
     /// // Register the stream with `Poll`
-    /// poll.register(&stream, Token(0), Ready::all(), PollOpt::edge()).unwrap();
+    /// poll.register(&stream, Token(0), Ready::all(), PollOpt::edge())?;
     ///
     /// // Wait for the socket to become ready. This has to happens in a loop to
     /// // handle spurious wakeups.
     /// loop {
-    ///     poll.poll(&mut events, None).unwrap();
+    ///     poll.poll(&mut events, None)?;
     ///
     ///     for event in &events {
     ///         if event.token() == Token(0) && event.readiness().is_writable() {
     ///             // The socket connected (probably, it could still be a spurious
     ///             // wakeup)
-    ///             return;
+    ///             return Ok(());
     ///         }
     ///     }
     /// }
+    /// #     Ok(())
+    /// # }
+    /// #
+    /// # fn main() {
+    /// #     try_main().unwrap();
+    /// # }
     /// ```
     ///
     /// [struct]: #
@@ -1162,21 +1218,29 @@
 /// # Examples
 ///
 /// ```
+/// # use std::error::Error;
+/// # fn try_main() -> Result<(), Box<Error>> {
 /// use mio::{Events, Poll};
 /// use std::time::Duration;
 ///
 /// let mut events = Events::with_capacity(1024);
-/// let poll = Poll::new().unwrap();
+/// let poll = Poll::new()?;
 ///
 /// assert_eq!(0, events.len());
 ///
 /// // Register `Evented` handles with `poll`
 ///
-/// poll.poll(&mut events, Some(Duration::from_millis(100))).unwrap();
+/// poll.poll(&mut events, Some(Duration::from_millis(100)))?;
 ///
 /// for event in &events {
 ///     println!("event={:?}", event);
 /// }
+/// #     Ok(())
+/// # }
+/// #
+/// # fn main() {
+/// #     try_main().unwrap();
+/// # }
 /// ```
 ///
 /// [`Poll::poll`]: struct.Poll.html#method.poll
@@ -1193,19 +1257,27 @@
 /// # Examples
 ///
 /// ```
+/// # use std::error::Error;
+/// # fn try_main() -> Result<(), Box<Error>> {
 /// use mio::{Events, Poll};
 /// use std::time::Duration;
 ///
 /// let mut events = Events::with_capacity(1024);
-/// let poll = Poll::new().unwrap();
+/// let poll = Poll::new()?;
 ///
 /// // Register handles with `poll`
 ///
-/// poll.poll(&mut events, Some(Duration::from_millis(100))).unwrap();
+/// poll.poll(&mut events, Some(Duration::from_millis(100)))?;
 ///
 /// for event in events.iter() {
 ///     println!("event={:?}", event);
 /// }
+/// #     Ok(())
+/// # }
+/// #
+/// # fn main() {
+/// #     try_main().unwrap();
+/// # }
 /// ```
 ///
 /// [`Events`]: struct.Events.html
@@ -1240,19 +1312,27 @@
     /// # Examples
     ///
     /// ```
+    /// # use std::error::Error;
+    /// # fn try_main() -> Result<(), Box<Error>> {
     /// use mio::{Events, Poll};
     /// use std::time::Duration;
     ///
     /// let mut events = Events::with_capacity(1024);
-    /// let poll = Poll::new().unwrap();
+    /// let poll = Poll::new()?;
     ///
     /// // Register handles with `poll`
     ///
-    /// let n = poll.poll(&mut events, Some(Duration::from_millis(100))).unwrap();
+    /// let n = poll.poll(&mut events, Some(Duration::from_millis(100)))?;
     ///
     /// for i in 0..n {
     ///     println!("event={:?}", events.get(i).unwrap());
     /// }
+    /// #     Ok(())
+    /// # }
+    /// #
+    /// # fn main() {
+    /// #     try_main().unwrap();
+    /// # }
     /// ```
     pub fn get(&self, idx: usize) -> Option<Event> {
         self.inner.get(idx)
@@ -1306,19 +1386,27 @@
     /// # Examples
     ///
     /// ```
+    /// # use std::error::Error;
+    /// # fn try_main() -> Result<(), Box<Error>> {
     /// use mio::{Events, Poll};
     /// use std::time::Duration;
     ///
     /// let mut events = Events::with_capacity(1024);
-    /// let poll = Poll::new().unwrap();
+    /// let poll = Poll::new()?;
     ///
     /// // Register handles with `poll`
     ///
-    /// poll.poll(&mut events, Some(Duration::from_millis(100))).unwrap();
+    /// poll.poll(&mut events, Some(Duration::from_millis(100)))?;
     ///
     /// for event in events.iter() {
     ///     println!("event={:?}", event);
     /// }
+    /// #     Ok(())
+    /// # }
+    /// #
+    /// # fn main() {
+    /// #     try_main().unwrap();
+    /// # }
     /// ```
     pub fn iter(&self) -> Iter {
         Iter {
@@ -1386,6 +1474,8 @@
     /// # Examples
     ///
     /// ```
+    /// # use std::error::Error;
+    /// # fn try_main() -> Result<(), Box<Error>> {
     /// use mio::{Events, Ready, Registration, Poll, PollOpt, Token};
     /// use std::thread;
     ///
@@ -1398,8 +1488,8 @@
     ///     set_readiness.set_readiness(Ready::readable());
     /// });
     ///
-    /// let poll = Poll::new().unwrap();
-    /// poll.register(&registration, Token(0), Ready::all(), PollOpt::edge()).unwrap();
+    /// let poll = Poll::new()?;
+    /// poll.register(&registration, Token(0), Ready::all(), PollOpt::edge())?;
     ///
     /// let mut events = Events::with_capacity(256);
     ///
@@ -1408,11 +1498,16 @@
     ///
     ///     for event in &events {
     ///         if event.token() == Token(0) && event.readiness().is_readable() {
-    ///             return;
+    ///             return Ok(());
     ///         }
     ///     }
     /// }
-    ///
+    /// #     Ok(())
+    /// # }
+    /// #
+    /// # fn main() {
+    /// #     try_main().unwrap();
+    /// # }
     /// ```
     /// [struct]: #
     /// [`Poll`]: struct.Poll.html
@@ -1541,14 +1636,22 @@
     /// # Examples
     ///
     /// ```
+    /// # use std::error::Error;
+    /// # fn try_main() -> Result<(), Box<Error>> {
     /// use mio::{Registration, Ready};
     ///
     /// let (registration, set_readiness) = Registration::new2();
     ///
     /// assert!(set_readiness.readiness().is_empty());
     ///
-    /// set_readiness.set_readiness(Ready::readable()).unwrap();
+    /// set_readiness.set_readiness(Ready::readable())?;
     /// assert!(set_readiness.readiness().is_readable());
+    /// #     Ok(())
+    /// # }
+    /// #
+    /// # fn main() {
+    /// #     try_main().unwrap();
+    /// # }
     /// ```
     pub fn readiness(&self) -> Ready {
         self.inner.readiness()
@@ -1573,28 +1676,36 @@
     /// work:
     ///
     /// ```
+    /// # use std::error::Error;
+    /// # fn try_main() -> Result<(), Box<Error>> {
     /// use mio::{Events, Registration, Ready, Poll, PollOpt, Token};
     ///
-    /// let poll = Poll::new().unwrap();
+    /// let poll = Poll::new()?;
     /// let (registration, set_readiness) = Registration::new2();
     ///
     /// poll.register(&registration,
     ///               Token(0),
     ///               Ready::readable(),
-    ///               PollOpt::edge()).unwrap();
+    ///               PollOpt::edge())?;
     ///
     /// // Set the readiness, then immediately poll to try to get the readiness
     /// // event
-    /// set_readiness.set_readiness(Ready::readable()).unwrap();
+    /// set_readiness.set_readiness(Ready::readable())?;
     ///
     /// let mut events = Events::with_capacity(1024);
-    /// poll.poll(&mut events, None).unwrap();
+    /// poll.poll(&mut events, None)?;
     ///
     /// // There is NO guarantee that the following will work. It is possible
     /// // that the readiness event will be delivered at a later time.
     /// let event = events.get(0).unwrap();
     /// assert_eq!(event.token(), Token(0));
     /// assert!(event.readiness().is_readable());
+    /// #     Ok(())
+    /// # }
+    /// #
+    /// # fn main() {
+    /// #     try_main().unwrap();
+    /// # }
     /// ```
     ///
     /// # Examples
@@ -1603,14 +1714,22 @@
     /// documentation.
     ///
     /// ```
+    /// # use std::error::Error;
+    /// # fn try_main() -> Result<(), Box<Error>> {
     /// use mio::{Registration, Ready};
     ///
     /// let (registration, set_readiness) = Registration::new2();
     ///
     /// assert!(set_readiness.readiness().is_empty());
     ///
-    /// set_readiness.set_readiness(Ready::readable()).unwrap();
+    /// set_readiness.set_readiness(Ready::readable())?;
     /// assert!(set_readiness.readiness().is_readable());
+    /// #     Ok(())
+    /// # }
+    /// #
+    /// # fn main() {
+    /// #     try_main().unwrap();
+    /// # }
     /// ```
     ///
     /// [`Registration`]: struct.Registration.html
diff --git a/src/sys/unix/eventedfd.rs b/src/sys/unix/eventedfd.rs
index 7ee2918..c40d5fe 100644
--- a/src/sys/unix/eventedfd.rs
+++ b/src/sys/unix/eventedfd.rs
@@ -29,6 +29,8 @@
 /// Basic usage
 ///
 /// ```
+/// # use std::error::Error;
+/// # fn try_main() -> Result<(), Box<Error>> {
 /// use mio::{Ready, Poll, PollOpt, Token};
 /// use mio::unix::EventedFd;
 ///
@@ -36,13 +38,19 @@
 /// use std::net::TcpListener;
 ///
 /// // Bind a std listener
-/// let listener = TcpListener::bind("127.0.0.1:0").unwrap();
+/// let listener = TcpListener::bind("127.0.0.1:0")?;
 ///
-/// let poll = Poll::new().unwrap();
+/// let poll = Poll::new()?;
 ///
 /// // Register the listener
 /// poll.register(&EventedFd(&listener.as_raw_fd()),
-///              Token(0), Ready::readable(), PollOpt::edge()).unwrap();
+///              Token(0), Ready::readable(), PollOpt::edge())?;
+/// #     Ok(())
+/// # }
+/// #
+/// # fn main() {
+/// #     try_main().unwrap();
+/// # }
 /// ```
 ///
 /// Implementing `Evented` for a custom type backed by a `RawFd`.
diff --git a/src/sys/unix/ready.rs b/src/sys/unix/ready.rs
index 7c62492..ef454d0 100644
--- a/src/sys/unix/ready.rs
+++ b/src/sys/unix/ready.rs
@@ -63,20 +63,27 @@
 /// Registering readable and error interest on a socket
 ///
 /// ```
+/// # use std::error::Error;
+/// # fn try_main() -> Result<(), Box<Error>> {
 /// use mio::{Ready, Poll, PollOpt, Token};
 /// use mio::tcp::TcpStream;
 /// use mio::unix::UnixReady;
 ///
-/// let addr = "216.58.193.68:80".parse().unwrap();
-/// let socket = TcpStream::connect(&addr).unwrap();
+/// let addr = "216.58.193.68:80".parse()?;
+/// let socket = TcpStream::connect(&addr)?;
 ///
-/// let poll = Poll::new().unwrap();
+/// let poll = Poll::new()?;
 ///
 /// poll.register(&socket,
 ///               Token(0),
 ///               Ready::readable() | UnixReady::error(),
-///               PollOpt::edge()).unwrap();
-///
+///               PollOpt::edge())?;
+/// #     Ok(())
+/// # }
+/// #
+/// # fn main() {
+/// #     try_main().unwrap();
+/// # }
 /// ```
 ///
 /// [`Poll`]: struct.Poll.html
diff --git a/src/token.rs b/src/token.rs
index b31a31b..dd6ef40 100644
--- a/src/token.rs
+++ b/src/token.rs
@@ -11,6 +11,8 @@
 /// example, `HashMap` is used, but usually something like [`slab`] is better.
 ///
 /// ```
+/// # use std::error::Error;
+/// # fn try_main() -> Result<(), Box<Error>> {
 /// use mio::{Events, Ready, Poll, PollOpt, Token};
 /// use mio::tcp::TcpListener;
 ///
@@ -32,19 +34,19 @@
 /// let mut next_socket_index = 0;
 ///
 /// // The `Poll` instance
-/// let poll = Poll::new().unwrap();
+/// let poll = Poll::new()?;
 ///
 /// // Tcp listener
-/// let listener = TcpListener::bind(&"127.0.0.1:0".parse().unwrap()).unwrap();
+/// let listener = TcpListener::bind(&"127.0.0.1:0".parse()?)?;
 ///
 /// // Register the listener
 /// poll.register(&listener,
 ///               LISTENER,
 ///               Ready::readable(),
-///               PollOpt::edge()).unwrap();
+///               PollOpt::edge())?;
 ///
 /// // Spawn a thread that will connect a bunch of sockets then close them
-/// let addr = listener.local_addr().unwrap();
+/// let addr = listener.local_addr()?;
 /// thread::spawn(move || {
 ///     use std::net::TcpStream;
 ///
@@ -64,7 +66,7 @@
 /// // The main event loop
 /// loop {
 ///     // Wait for events
-///     poll.poll(&mut events, None).unwrap();
+///     poll.poll(&mut events, None)?;
 ///
 ///     for event in &events {
 ///         match event.token() {
@@ -76,7 +78,7 @@
 ///                         Ok((socket, _)) => {
 ///                             // Shutdown the server
 ///                             if next_socket_index == MAX_SOCKETS {
-///                                 return;
+///                                 return Ok(());
 ///                             }
 ///
 ///                             // Get the token for the socket
@@ -87,7 +89,7 @@
 ///                             poll.register(&socket,
 ///                                          token,
 ///                                          Ready::readable(),
-///                                          PollOpt::edge()).unwrap();
+///                                          PollOpt::edge())?;
 ///
 ///                             // Store the socket
 ///                             sockets.insert(token, socket);
@@ -122,6 +124,12 @@
 ///         }
 ///     }
 /// }
+/// #     Ok(())
+/// # }
+/// #
+/// # fn main() {
+/// #     try_main().unwrap();
+/// # }
 /// ```
 ///
 /// [`Evented`]: event/trait.Evented.html