zoukankan      html  css  js  c++  java
  • try catch 自定义捕获异常

    首先创造一个MyException类,继承自Exception类

    代码实现如下:

    继承自Exception类,在MyException的方法中调用父类的方法,返回错误的提示信息。

    1 public class MyException extends Exception {
    2 
    3     public MyException(String message) {
    4         super(message);
    5     }
    6 }

    使用该类判断录入的字符是否是正整数类型,如果不是,返回相关的错误信息;否则根据相关的条件返回成绩的评定等级。

    使用try catch时,在代码产生的异常可以被throw语句抛出并被catch语句捕获。(必须被抛出才能被捕获)

    必须将可能存在异常的代码放在try代码块内,才能捕获可能抛出的异常。一个try类可以对应一个或者多个catch类,一但抛出的异常被一个catch捕获,其他就不会执行。

     1 import java.util.Scanner;
     2 
     3 public class students {
     4     static Scanner sc=null;
     5     
     6     static int check(String c) throws MyException {
     7         if(!c.matches("^\-?[0-9]+$")) {  //匹配所有的整数
     8             throw new MyException("请输入整数数字!");
     9         }
    10         if((Integer.valueOf(c))>100||(Integer.valueOf(c))<0) {   
    11          throw new MyException("请输入0到100之间的整数!");
    12         }
    13         
    14         return Integer.valueOf(c);
    15     }
    16     
    17     public static void main(String[] args)  {
    18         System.out.println("请输出一个整数:");
    19         String c=null;
    20         
    21         sc=new Scanner(System.in);
    22         c=sc.nextLine();
    23         try {
    24         int a=check(c);
    25         if(a<=100&&a>=90) {
    26             System.out.println("优!");
    27         } 
    28         else if(a>=80&&a<90) {
    29             System.out.println("良!");
    30         } 
    31         else if(a>=70&&a<80){
    32             System.out.println("中!");
    33         }
    34         else if(a>=60&&a<70) {
    35         System.out.println("及格!");
    36         }
    37         else{
    38             System.out.println("不及格!");
    39         }
    40         }
    41         catch (MyException e) {
    42             System.out.println(e);
    43         }
    44 
    45 }
    46 }

    程序截图如下:

     

     

     除此,完整的try catch语句还有finally语句,该语句一般都会执行,只在以下几种方式下不会执行:

    1.在finally语句块中发生异常。

    2.在前面的代码中使用了System.exit(0)语句

    3.程序所在的线程死亡

    4.关闭cpu

    加入finally语句运行如下:

     1 import java.util.Scanner;
     2 
     3 public class students {
     4     static Scanner sc=null;
     5     
     6     static int check(String c) throws MyException {
     7         if(!c.matches("^\-?[0-9]+$")) {  //匹配所有的整数
     8             throw new MyException("请输入整数数字!");
     9         }
    10         if((Integer.valueOf(c))>100||(Integer.valueOf(c))<0) {  //判断是否为规定范围的整数
    11          throw new MyException("请输入0到100之间的整数!");
    12         }
    13         
    14         return Integer.valueOf(c);
    15     }
    16     
    17     public static void main(String[] args)  {
    18         System.out.println("请输出一个整数:");
    19         String c=null;
    20         
    21         sc=new Scanner(System.in);
    22         c=sc.nextLine();
    23         try {
    24         int a=check(c);
    25         if(a<=100&&a>=90) {
    26             System.out.println("优!");
    27         } 
    28         else if(a>=80&&a<90) {
    29             System.out.println("良!");
    30         } 
    31         else if(a>=70&&a<80){
    32             System.out.println("中!");
    33         }
    34         else if(a>=60&&a<70) {
    35         System.out.println("及格!");
    36         }
    37         else{
    38             System.out.println("不及格!");
    39         }
    40         }
    41         catch (MyException e) {
    42             System.out.println(e);  //输出捕获的异常信息
    43         }
    44    finally {
    45        System.out.println("检查异常完成!");  //finally语句块的执行
    46    }
    47 }
    48 }

    执行如下:

     

  • 相关阅读:
    Tempter of the Bone 搜索---奇偶性剪枝
    uestc 1709 Binary Operations 位运算的灵活运用
    uestc 1072 a ^ b
    uestc Another LCIS
    武汉邀请赛 Key Logger 双向链表
    bnu 29378 Adidas vs Adivon 基础题
    中南月赛F ZZY and his little friends
    日期问题
    开灯问题
    开灯问题
  • 原文地址:https://www.cnblogs.com/cxy0210/p/11761861.html
Copyright © 2011-2022 走看看