当前位置: 技术问答>java相关
请问使用throw抛出异常时,如何自定义异常!!!
来源: 互联网 发布时间:2015-08-19
本文导语: 请问使用throw抛出异常时,如何自定义异常!!! | 用户定义异常是通过扩展Exception类来创建的。这种异常类可以包含一个“普通”类所包含的任何东西。下面就是一个用户定义异常类例子,...
请问使用throw抛出异常时,如何自定义异常!!!
|
用户定义异常是通过扩展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. .. .
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. .. .