当前位置: 首页 > news >正文

异常 Exception 练习题 (未完成)

异常 Exception 练习题

  • try-catch异常处理
    • 1
    • 2
    • 3
    • 4
  • 异常
    • 1(没有自己写)
    • 2
    • 3
    • 4

try-catch异常处理

1

class Exception01 {public static int method() {try {String[] names = new String[3];//String[]数组if (names[1].equals("tom")) {//NullPointerExceptionSystem.out.println(names[1]);} else {names[3] = "hspedu";}return 1;} catch (ArrayIndexOutOfBoundsException e) {return 2;} catch (NullPointerException e) {//捕获return 3;} finally { //必须执行return 4; //返回4}}public static void main(String[] args) {System.out.println(method()); //4}
}

String[] names = new String[3];的意思是开辟了一个数组空间,每个元素都是一个String类,默认指向null。第五行if (names[1].equals(“tom”)) 的时候,name[1]是空指针,name[1].equals一定抛出异常,就会是NullPointerException,所以是return 3,但是这里有finally,还是会return 4.

2

public class TryCatchExercise02 {
}class Exception02 {public static int method() {int i = 1;try {i++; //i = 2String[] names = new String[3];if (names[1].equals("tom")) {//空指针System.out.println(names[1]);} else {names[3] = "hspedu";}return 1;} catch (ArrayIndexOutOfBoundsException e) {return 2;} catch (NullPointerException e) {return ++i; //i = 3} finally {//必须执行return ++i; //i = 4}}public static void main(String[] args) {System.out.println(method());}
}

OUT: 4

3

class ExceptionExe01 {public static int method() {int i = 1;//i = 1try {i++;// i=2String[] names = new String[3];if (names[1].equals("tom")) { //空指针System.out.println(names[1]);} else {names[3] = "hspedu";}return 1;} catch (ArrayIndexOutOfBoundsException e) {return 2;} catch (NullPointerException e) {return ++i;  // i = 3 => 保存临时变量 temp = 3;} finally {++i; //i = 4System.out.println("i=" + i);// i = 4}}public static void main(String[] args) {System.out.println(method());// 3}
}

NullPointerException 异常,catch中 i = 3; 但是先不return, 注意底层会保存在一个临时变量中 temp=3;
然后执行 finally,i=4,输出 i = 4。
然后回到NullPointerException 的catch中,还是会返回临时变量。
输出:
i=4
3

4

题目:如果用户输入的不是一个整数,就提示他反复输入,直到输入一个整数为止。

不会写!!!!ohhhhhhhhnononono/(ㄒoㄒ)/

public class TryCatchExercise04 {public static void main(String[] args) {//如果用户输入的不是一个整数,就提示他反复输入,直到输入一个整数为止//思路//1. 创建Scanner对象//2. 使用无限循环,去接收一个输入//3. 然后将该输入的值,转成一个int//4. 如果在转换时,抛出异常,说明输入的内容不是一个可以转成int的内容//5. 如果没有抛出异常,则break 该循环Scanner scanner = new Scanner(System.in);int num = 0;String inputStr = "";while (true) {System.out.println("请输入一个整数:"); //inputStr = scanner.next();try {num = Integer.parseInt(inputStr); //这里是可能抛出异常break;} catch (NumberFormatException e) {System.out.println("你输入的不是一个整数:");}}System.out.println("你输入的值是=" + num);}
}

异常

1(没有自己写)

a)编写应用程序EcmDef.java,接收命令行的两个参数(整数),计算两数相除。
b)计算两个数相除,要求使用方法cal(int n1, int n2)。
c)对数据格式不正确、缺少命令行参数、除0进行异常处理。

public class Homework01 {public static void main(String[] args) {/*编写应用程序EcmDef.java,接收命令行的两个参数(整数),计算两数相除。
计算两个数相除,要求使用方法 cal(int n1, int n2)
对数据格式不正确(NumberFormatException)、缺少命令行参数(ArrayIndexOutOfBoundsException)、除0 进行异常处理(ArithmeticException)。*/try {//先验证输入的参数的个数是否正确 两个参数if(args.length != 2) {throw new ArrayIndexOutOfBoundsException("参数个数不对");}//先把接收到的参数,转成整数int n1 = Integer.parseInt(args[0]);int n2 = Integer.parseInt(args[1]);double res = cal(n1, n2);//该方法可能抛出ArithmeticExceptionSystem.out.println("计算结果是=" + res);} catch (ArrayIndexOutOfBoundsException e) {System.out.println(e.getMessage());} catch (NumberFormatException e) {System.out.println("参数格式不正确,需要输出整数");} catch (ArithmeticException e) {System.out.println("出现了除0的异常");}}//编写cal方法,就是两个数的商public static double cal(int n1, int n2) {return n1 / n2;}
}

2

判断是否会发生异常?

public class Homework02 {public static void main(String[] args) {//args.length = 0//这里发生的是 ArrayIndexOutOfBoundsExceptionif(args[4].equals("john")){  //可能发生NullPointerExceptionSystem.out.println("AA");}else{System.out.println("BB");}Object o= args[2]; //String->Object ,向上转型Integer i = (Integer)o; //错误,这里一定会发生 ClassCastException}
}

空指针


可能发生NullPointerException
可能发生 ClassCastException

3

判断正误

public class Homework03 {public static void func() {//静态方法try {throw new RuntimeException();} finally {System.out.println("B");}}public static void main(String[] args) {//main方法try {func();System.out.println("A");} catch (Exception e) {System.out.println("C");}System.out.println("D");}}

B
A
C
D

注意: 不会输出A,因为在try代码块中 抛出异常之后是不会执行接下来的代码的。 正确答案是:B C D

4

判断正误

    public static void main(String[] args) {//main方法try {showExce();System.out.println("A");} catch (Exception e) {System.out.println("B");} finally {System.out.println("C");}System.out.println("D");}public static void showExce() throws Exception {throw new Exception();}}

B
C
D

http://www.lryc.cn/news/253432.html

相关文章:

  • Linux系统编程:并发与信号总结
  • Jmeter 接口-加密信息发送(一百九十九)
  • 微信小程序nodejs+vue+uniapp视力保养眼镜店连锁预约系统
  • 掌握Vue侦听器(watch)的应用
  • SAP-PP:PP顾问管理系统的相关建议
  • Unity资源路径与读取
  • “大+小模型”赋能油气行业高质量发展
  • 【win32_004】字符串处理函数
  • 如果不小心修改了按钮的名字并且忘记了原名字
  • opencv阈值处理
  • html之JS
  • SQL Server的安装和首个库的创建
  • STM32下载程序的五种方法
  • 基于springboot + vue大学生竞赛管理系统
  • 【详解】Spark数据倾斜问题由基础到深入详解-完美理解-费元星
  • xss漏洞后端进行html消毒
  • [论文精读]利用大语言模型对扩散模型进行自我修正
  • CTF特训日记day(4-6)
  • 【深度学习笔记】09 权重衰减
  • 三大兼容 | 人大金仓兼容+优化MySQL用户变量特性
  • Git介绍与安装使用
  • 理解DuLinkList L中的“”引用符号
  • 前端并发多个请求并失败重发
  • 【Qt开发流程】之对象模型2:属性系统
  • PHP之curl详细讲解
  • R语言30分钟上手
  • 上下拉电阻会增强驱动能力吗?
  • 题目:小明的彩灯(蓝桥OJ 1276)
  • 换元法求不定积分
  • 在Docker容器中启用SSH服务,实现外部访问的详细教程