活动地址:CSDN21天学习挑战赛
目录
throws
1,概述
1、throws + 异常类型 写在方法的声明处,指明此方法执行时可能会抛出的异常类型
一旦当方法体执行时出现异常,仍会在异常代码处生成一个异常类的对象,此对象满足throws后异常类型时,就会被抛出。异常代码后续的代码就不再执行 。
2、try-catch-finally 真正的将异常处理掉了,而throws 只是将异常抛给了调用者,并没有真正将异常处理掉
2,开发中如何选择处理异常类型
a、如果父类中被重写的方法没有throws方式处理异常,则子类重写的方法也不能使用throws必须使用try-catch-finally方式处理。
b、执行的方法a中,先后调用了另外的方法,这些方法是递进关系执行的。我们建议这些方法使用throws的方式进行处理,而执行的方法a可以考虑使用try-catch-finally方式进行处理
3,举例
public class Test { public static void main(String[] args) { try { method2(); } catch (IOException e) { e.printStackTrace(); } } public static void method3() { try { method2(); } catch (IOException e) { e.printStackTrace(); } } public static void method2() throws IOException{ method1(); } public static void method1() throws FileNotFoundException,IOException{ File file = new File("hello.txt"); FileInputStream fis = new FileInputStream(file); int data = fis.read(); while (data != -1) { System.out.print((char)data); data = fis.read(); } fis.close(); } }
**
重写方法异常
1,概述
子类重写的方法抛出的异常类型不大于父类被重写的方法抛出的异常类型
2,举例
class SuperClass{ public void method() throws IOException{ } } class SubClass extends SuperClass{ public void method() throws FileNotFoundException{ } }
**
自定义异常
1,如何自定义异常类
1、继承现有的异常结构:RuntimeException、Exception
2、提供全局常量serialVersionUID
3、提供重载的构造器
2,手动抛出异常
class Student{ private int id; public void regist(int id) throws java.lang.Exception { if (id > 0) { this.id = id; }else { // System.out.println("输入数据非法!"); //手动抛出异常 throw new MyException("不能输入负数"); } }
提醒:在发布作品前请把不用的内容删掉(活动地址请保留)
本文含有隐藏内容,请 开通VIP 后查看