Java中关于异常的一些问题(三)

来源:互联网 发布:vb简单程序代码 编辑:程序博客网 时间:2024/05/22 00:54

使用throws声明抛出 的异常

格式如下:

throws ExceptionClass1,ExceptionClass2...

使用throws声明抛出异常时有一个限制:子类方法声明抛出的异常类型应该是父类方法声明抛出的异常类型的子类或相同,子类方法声明抛出的异常不允许比父类方法声明抛出的异常多。

import java.io.*;public class OverrideThrows{public void test()throws IOException{FileInputStream fis = new FileInputStream("a.txt");}}class Sub extends OverrideThrows{// 子类方法声明抛出了比父类方法更大的异常// 所以下面方法出错public void test()throws Exception{}}
上面程序中Sub子类中的test()方法声明抛出Exception,该Exception是其父类声明抛出异常IOException类的父类,这将导致程序无法通过编译。


使用throw抛出异常

格式:

throw ExceptionInstance;

public class ThrowTest{public static void main(String[] args){try{// 调用声明抛出Checked异常的方法,要么显式捕获该异常// 要么在main方法中再次声明抛出throwChecked(-3);}catch (Exception e){System.out.println(e.getMessage());}// 调用声明抛出Runtime异常的方法既可以显式捕获该异常,// 也可不理会该异常throwRuntime(3);}public static void throwChecked(int a)throws Exception{if (a > 0){// 自行抛出Exception异常// 该代码必须处于try块里,或处于带throws声明的方法中throw new Exception("a的值大于0,不符合要求");}}public static void throwRuntime(int a){if (a > 0){// 自行抛出RuntimeException异常,既可以显式捕获该异常// 也可完全不理会该异常,把该异常交给该方法调用者处理throw new RuntimeException("a的值大于0,不符合要求");}}}


总结:

1、不要过度使用异常

2、不要使用过于庞大的try块

3、避免使用Catch All语句

4、不要忽略捕获到的异常




0 0
原创粉丝点击