try-catch方式
throws方式
throws + 异常类型,写在方法的声明处。指明此方法执行时,可能会抛出的异常类型。一旦当方法体执行时出现异常,就会在异常处生成一个异常类的对象,此对象满足throws异常类型时,就会被抛出。异常后续的代码就不再执行。
try-catch-finally
真正的将异常给处理掉了。
throws
只是将异常抛给了方法的调用者,并没有真正的将异常处理掉。
手动抛出Exception类型异常
方法中手动抛出Exception类型异常,则方法中必须使用throws方式处理异常,且调用者必须对该异常进行处理,使用try-catch或者throws继续抛出此异常。
手动抛出RuntimeException类型异常
调用者不用对该运行时异常进行处理,程序运行时遇到异常后,自动抛出到控制台。
/** * 手动抛出异常 */ public class testException { public static void main(String[] args) { Student student = new Student(); try { student.addStudent(-1); } catch (Exception e) { //输出异常处理信息 System.out.println(e.getMessage()); } } } /** * 手动抛出Exception异常 */ class Student { private Integer age; public void addStudent(Integer age) throws Exception { if (age > 0) { this.age = age; } else { throw new Exception("年龄必须大于0"); } } } class testException2 { public static void main(String[] args) { Student2 student = new Student2(); student.addStudent(-1); } } /** * 手动抛出RuntimeException异常 */ class Student2 { private Integer age; public void addStudent(Integer age) { if (age > 0) { this.age = age; } else { throw new RuntimeException("年龄必须大于0"); } } }
自定义异常步骤:
/** * 自定义异常,继承Exception */ public class MyException extends Exception { //网络通信传输时,标识该类唯一 static final long serialVersionUID = -3387516993124229948L; public MyException() { } public MyException(String msg) { //调用父类的构造方法处理 super(msg); } }