千锋逆战班学习日志


千锋逆战班学习第27天
努力或许没有收获,但不努力一定没收获,加油。
今天我学了Java课程的异常。
中国加油!!!武汉加油!!!千锋加油!!!我自己加油!!!

总结-异常

七、自定义异常

  • 需继承自Exception或Exception的子类,常用RuntimeException。
  • 必要提供的构造方法:
  • 无参数构造方法
  • String message参数的构造方法

八、方法覆盖

  • 带有异常声明的方法覆盖:
    • 方法名、参数列表、返回值类型必须和父类相同。
    • 父类中声明了异常,子类重写后可声明也可不声明。
    • 父类中声明了异常,子类重写可声明的异常与其相等或是其子类。
    • 父类中方法没有声明异常,则子类也不可以声明异常。
    • 父类中声明了异常,子类可声明比父类更多异常,必须小于其父类声明的异常。

九、扩充:方法执行中字节码操作指令

I. 反编译:javap -verbose 文件名称(是.class) > 自定义文件名称.bytecode

Question_11_5and6

5.(自定义异常)创建两个自定义异常类 MyException1 和 MyException2。要求:
I. MyException1 为已检查异常,MyException2 为运行时异常。
AI.这两个异常均具有两个构造函数,一个无参,另一个带字符串参数,参数表示产生异常的信息。
6.(自定义异常)在上一题的基础上,把下面代码补充完整。

public class TestMyException{
	public static void main(String args[]){ 
		int n;
		//读入 n 
		try{
			m(n); 
		}catch(MyException1 ex1){
			//输出 ex1 详细的方法调用栈信息 
		}catch(MyException2 ex2){
			//输出 ex2 的详细信息
			//并把 ex2 重新抛出
		}
	}
	public static void m(int n)_________ { //声明抛出 MyException1 
		if (n == 1) {
			//抛出 MyException1
			//并设定其详细信息为“n == 1”
		}else {
			//抛出 MyException2
			//并设定其详细信息为“n == 2”
		}
	}
}

补充后

public class TestMyException {
	public static void main(String args[]){ 
		int n = 2;
		//读入n 
		try {
			m(n);
		}catch(MyException1 ex1){
			//输出 ex1 详细的方法调用栈信息 
			ex1.printStackTrace();
		}catch(MyException2 ex2){
			//输出 ex2 的详细信息
			System.out.println(ex2.getMessage());
			//并把 ex2 重新抛出
			throw ex2;
		}
	}
	public static void m(int n) throws MyException1{ //声明抛出 MyException1 
		if (n == 1) {
			//抛出 MyException1
			//并设定其详细信息为“n == 1”
			throw new MyException1("n == 1");
		}else {
			//抛出 MyException2
			//并设定其详细信息为“n == 2”
			throw new MyException2("n == 2");
		}
	}
}
class MyException1 extends Exception{
	public  MyException1() {}
	public  MyException1(String message) {
		super(message);
	}
}

class MyException2 extends RuntimeException{
	public  MyException2() {}
	public  MyException2(String message) {
		super(message);
	}
}

Question_11_8

在这里插入图片描述
//1 AB
//2 D

Question_11_10

有以下代码

public class TestFinally {
	public static void main(String args[]){ 
		System.out.println ( ma() );
	}
	public static int ma(){
		int b;
		//读入 b
		try{
			int n = 100;
			return n/b;
		}catch(Exception e){
			return 10;
		}finally{
			return 100;
		}
	}
}

在 ma 中,当读入的 b 为 100 时,输出结果为———,当读入的 b 为 0 时,输出结果为______。

100;100

Question_11_12

import java.io.*; 
class MySuper{
	public void m() throws IOException{}
}
class MySub extends MySuper{
	public void m() throws EOFException{}
}
class MySub2 extends MySub {
	public void m() throws FileNotFoundException{}
}

以上代码是否能编译通过?如果不能,应该如何修改?
不能,删除MySub2的m()的“ throws FileNotFoundException”,或者MySub的m()的“throws EOFException”变为“throws EOFException,FileNotFoundException”
如有错误,请多包涵。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值