异常处理

    xiaoxiao2022-07-07  144

    Java常见错误与异常 try-catch-finally语句 try语句的嵌套 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader;

    public class ExceptionDemo { public static void main(String[] args) { while(true) { String[] week ={“Sun”,“Mon”,“Tue”,“Wed”,“Thu”,“Fri”,“Sat”}; try{ System.out.println(“Enter an index number(0-6):”); //接受用户输入 BufferedReader stdin=new BufferedReader(new InputStreamReader(System.in)); String input = new String(stdin.readLine()); //将数据转化为整数赋值给index; //并输出week数组的第index个元素 try{ int index = Integer.parseInt(input); System.out.println(index+" is "+week[index]); } //处理输入不是数字的情况 catch (NumberFormatException e){ System.out.println(“Index should be an integer.”); } //处理数组越界 catch (IndexOutOfBoundsException e){ System.out.println(“Index must between 0 and 6.”); } } //处理I/O异常 catch (IOException e) { System.out.println(e); } finally { System.out.println(“End of program”); } } } } 结果如下: Enter an index number(0-6): a Index should be an integer. End of program Enter an index number(0-6): 2 2 is Tue End of program Enter an index number(0-6): 11 Index must between 0 and 6. End of program /**********************************************************/ throw语句扔出异常: 程序会在执行throw语句后立即终止 例如: public class ExceptionDemo1 { static void demomethod(){ try { throw new NullPointerException(“demo1”); //抛出一个空指针异常 } catch (NullPointerException e){ //该catch块将捕获的异常抛出 System.out.println(“caught inside method”); throw e; } }

    public static void main(String[] args) { try { demomethod(); } catch (NullPointerException e){ //处理demomethod() 中的catch 块抛出的异常 System.out.println("caught in main: " +e); } }

    } 结果: caught inside method caught in main: java.lang.NullPointerException: demo1 可对比程序,在哪儿终止

    自定义异常处理类 1.创建异常类 //定义自己的异常类InsuffcientFundsException public class InsuffcientFundsException extends Exception{ private Account excepbank; //定义私有类型的Account类的对象 private double excepAmount; //定义用来记载取钱数目的变量 //构造方法 InsuffcientFundsException(Account ba,double dAmount) { excepbank = ba; excepAmount=dAmount; } //显示余额和取钱数目的方法 public String toString() { String str = “\n InsuffcientFundsException: \n 您的余额为”+excepbank.getbalance()+",需取出的数目为"+excepAmount; return str; } } 2.抛出异常 //定义Account 类 class Account { double balance; //balance 用来记载余额

    Account(double b) { balance=b; } public void desposite(double amount) //存钱 { if(amount>0) balance+=amount; System.out.println("存入"+amount+",余额为"+balance); } public void withdrawal(double dAccount)throws InsuffcientFundsException //取钱 { if(balance<dAccount) //余额小于取钱数目,抛出异常 { throw new InsuffcientFundsException(this ,dAccount); //this 指 bank 本身 } balance=balance-dAccount; System.out.println("\n取钱成功!\n取出"+dAccount+"后,余额为"+balance); } public double getBalance() { return balance; } public double getbalance() { return balance; }

    } 3.捕获异常 //定义TextExceptionDemo类 public class TextExceptionDemo { public static void main(String[] args) { try { Account ba=new Account(50); ba.desposite(100); ba.withdrawal(100); ba.withdrawal(70); } catch (Exception e) { System.out.println(e.toString()); } } } 结果: 存入100.0,余额为150.0

    取钱成功! 取出100.0后,余额为50.0

    InsuffcientFundsException: 您的余额为50.0,需取出的数目为70.0

    最新回复(0)