(①) 一:自定义异常类:
package 自定义异常; //或者继承RuntimeException(运行时异常) public class MyException extends Exception { private static final long serialVersionUID = 1L; // 提供无参数的构造方法 public MyException() { } // 提供一个有参数的构造方法 public MyException(String message) { super(message);// 把参数传递给Throwable的带String参数的构造方法 } }二:写一个测试分数的方法类:这里面是抛出一个自己写的异常类
package 自定义异常; public class CheckScore { // 检查分数合法性的方法check() 如果定义的是运行时异常就不用抛异常了 public void check(int score) throws MyException {// 抛出自己的异常类 if (score > 120 || score < 0) { // 分数不合法时抛出异常 throw new MyException("分数不合法,分数应该是0--120之间");// new一个自己的异常类 } else { System.out.println("分数合法,你的分数是" + score); } } }三:写一个测试分数,如果有异常,要捕获,不要抛出了 ,调用方法
package 自定义异常; import java.util.Scanner; /* * 自定义的异常测试类 */ public class Student { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int score = sc.nextInt(); CheckScore check = new CheckScore(); try { check.check(score); } catch (MyException e) {// 用自己的异常类来捕获异常 e.printStackTrace(); } } }(②) 自定义异常类
需求: 模拟feiQ上线的时候,如果没有插上网线,那么就抛出一个没有插上网线的异常, 如果已经插上了网上,那么就正常显示好友列表。
自定义异常类的步骤: 自定义一个类继承Exception即可。
//自定义了一个没有网线的异常类了。 class NoIpException extends Exception{ public NoIpException(String message){ super(message); //调用了Exception一个参数的构造函数。 } } class Demo2 { public static void main(String[] args) { String ip = "192.168.10.100"; ip = null; try{ feiQ(ip); // 如果调用了一个声明抛出异常类型的方法,那么调用者必须要处理。 }catch(NoIpException e){ e.printStackTrace(); System.out.println("马上插上网线!"); } } public static void feiQ(String ip) throws NoIpException{ if(ip==null){ throw new NoIpException("没有插网线啊,小白!"); } System.out.println("正常显示好友列表.."); } }(③) 1.定义异常类
自定义的异常类继承现有的异常类 提供一个序列号,作为对象的唯一标识 提供几个重载的构造器 自己或间接继承RuntimeException的自定异常类可以不用显示处理,反之,则需要显示处理。2.dome
1.这里的自定义异常是在Eclipse中按Ctrl+shift+T,查看RuntimeException源码参照写的。
//如果是继承Exception,则在手动抛出的是时候显示处理,或者丢给jvm class MyException extends RuntimeException { //序列号 static final long serialVersionUID = -70348971102145766939L; public MyException() { } public MyException(String msg) { super(msg); } } public class TestException4 { public static void main(String[] args) { Student s = new Student(); s.register(-1); //自定义异常类,try-catch-finally中的使用 try { s.register(-11); } catch (MyException e) { System.out.println(e.getMessage()); } System.out.println(s); } } class Student{ int id; public void register(int id) { if(id>0) { this.id = id; }else { //手动抛出一个异常的使用 throw new MyException("传入的id有误"); } } @Override public String toString() { return "Student [id=" + id + "]"; } }自定 异常类 MyException
public class MyException extends Exception{ public MyException(){ super(); } public MyException(String msg){ super(msg); } }测试类 ExceptionTest
public class ExceptionTest{ public static void main(String[] args){ ExceptionTest e = new ExceptionTest(); try{ e.judge(); } catch(MyException e1){ e1.printStackTrace(); } } public void judge() throws MyException{ int age = (int)Math.round(Math.random() * 20+1); if(age > 18) throw new MyException(age + "can"); else System.out.println(age+ " cant"); } }<转>
在进行程序开发的过程中,自定义异常遵循以下四个步骤:
1)首先创建自定义异常类,语法格式:自定义异常类名 extends Exception。 2)在方法中通过关键字throw抛出异常对象。 3)若是在当前抛出异常的方法中处理异常,可以用try-catch语句捕获并处理;若不是,在方法的声明处通过关键字throws指明要抛出给方法调用的异常。 4)在出现异常方法的调用中捕获并处理异常。
另一个例子:
异常类
public class MyException extends Exception{ public MyException(String msg){ super(msg); } }方法类:
public class Number{ public int division(int num1,int num2) throws MyException{ if(num2 == 0){ throw new MyException("WRONG"); } return num1/num2; } }测试类:
public class ExceptionTest{ public static void main(String[] args){ Number num = new Number(); try{ System.out.println(num.division(12, 0)); } catch(MyException e1){ System.out.println(e1.getMessage()); e1.printStackTrace(); } } }