用户定义异常是通过扩展Exception类来创建的。这种异常类可以包含一个“普通”类所包含的任何东西。下面就是一个用户定义异常类例子,它包含一个构造函数、几个变量以及方法:
1. public class ServerTimedOutException extends Exception {
2.     private String reason;
3.     private int port;
4.     public ServerTimedOutException (String reason,int port){ 
5.       this.reason = reason;
6.       this.port = port;
7.     } 
8.     public String getReason() {
9.     return reason;
10.     }
11.     public int getPort() {
12.       return port;
13.     }
14.  } 
    使用语句来抛出已经创建的异常:
throw new ServerTimedOutException
("Could not connect", 80);7.8.2  实例
    考虑一个客户服务器程序。在客户代码中,要与服务器连接,并希望服务器在5秒钟内响应。如果服务器没有响应,那么,代码就如下所述抛出一个异常(如一个用户定义的ServerTimedOutException)。
1.  public void connectMe(String serverName) throws 
     ServerTimedOutException {
2. int success;
3. int portToConnect = 80;
4. success = open(serverName, portToConnect);
5. if (success == -1) {
6. throw new ServerTimedOutException(
7. "Could not connect", 80);
8. }
9. } 
    要捕获异常,使用try语句:
1. public void findServer() {
2. . . .
3. try {
4. connectMe(defaultServer);
5. } catch(ServerTimedOutException e) {
6. System.out.println("Server timed out, trying alternate");
7. try {
8. connectMe(alternateServer);
9. } catch (ServerTimedOutException e1) {
10. System.out.println("No server currently available");
11. }
12. }
13. .. .