Java異常----自定義異常類(throw和throws關鍵字的用法)
阿新 • • 發佈:2019-01-29
Java的異常處理的五個關鍵字, try、catch、finally、throw、throws 的關係:
類。
例如:
執行結果如下:
處理異常方式: 1 try-catch 捕獲到異常後在catch中進行處理
2 throws 在方法的開始出throws異常,呼叫該方法的地方處理該異常!
一個方法在宣告時可以使用throws宣告丟擲所要產生的若干個異常,並在該方法的方法體中具體給出產生異常的操作。
•使用者定義的異常同樣要用try--catch捕獲,但必須由使用者自己丟擲 throw new MyException()。 •異常是一個類,使用者定義的異常必須直接或間接繼承自Throwable或Exception類,建議用Exception- package com.mys.ajax;
- /**自定義異常類,
- * 當方法傳遞的是負數是發生MyException
- */
- publicclass MyException extends Exception {
- String message;
- public MyException(int n) {
- message = n+"不是正數";
- }
- public String getMessage() {
- return message;
- }
-
publicvoid
- this.message = message;
- }
- }
- package com.mys.ajax;
- publicclass TestMyException {
- publicvoid check(int n) throws MyException{
- if(n<0){
- thrownew MyException(n);//丟擲異常,結束方法check()時執行
- }
-
double number = Math.sqrt(n);
- System.out.println(n+"的平方根是"+number);
- }
- publicstaticvoid main(String[] args) {
- TestMyException test = new TestMyException();
- try {
- test.check(8);//一般在最後呼叫該法的的方法(如main)體中處理異常
- test.check(-2);
- } catch (MyException e) {//必須要捕獲異常
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
執行結果如下:
com.mys.ajax.MyException: -2不是正數
at com.mys.ajax.TestMyException.check(TestMyException.java:7)
at com.mys.ajax.TestMyException.main(TestMyException.java:18)
8的平方根是2.8284271247461903
自定義異常還可以是多個:
以下是分享網友的:
- /*
- 異常練習1
- */
- class NoValueException extends Exception
- {
- NoValueException(String msg)
- {
- super(msg);
- }
- }
- interface Shape
- {
- void getArea();
- }
- class Rec implements Shape
- {
- privateint len , wid;
- Rec(int len , int wid) throws NoValueException
- {
- if( len <= 0 || wid <= 0)
- thrownew NoValueException("出現非法值!");
- this.len = len;
- this.wid = wid;
- }
- publicvoid getArea()
- {
- System.out.println(len*wid);
- }
- }
- class ExceptionTest
- {
- publicstaticvoid main(String [] args)
- {
- try
- {
- Rec r = new Rec(-3,4);
- r.getArea();
- }
- catch ( NoValueException e)
- {
- System.out.println(e.toString());
- }
- System.out.println("Over");
- }
- }
- /*
- 異常練習2
- */
- class NoValueException extends RuntimeException
- {
- NoValueException(String msg)
- {
- super(msg);
- }
- }
- interface Shape
- {
- void getArea();
- }
- class Rec implements Shape
- {
- privateint len , wid;
- Rec(int len , int wid) //throws NoValueException
- {
- if( len <= 0 || wid <= 0)
- thrownew NoValueException("出現非法值!");
- this.len = len;
- this.wid = wid;
- }
- publicvoid getArea()
- {
- System.out.println(len*wid);
- }
- }
- class ExceptionTest
- {
- publicstaticvoid main(String [] args)
- {
- Rec r = new Rec(-3,4);
- r.getArea();
- System.out.println("Over");
- }
- }