异常2
来源:互联网 发布:程序员的数学pdf百度云 编辑:程序博客网 时间:2024/06/05 00:29
class AgeTooSmallException extends Exception{
public AgeTooSmallException(){
}
public AgeTooSmallException(String msg){
super(msg);
}
}
class AgeTooBigException extends Exception{
public AgeTooBigException(){
}
public AgeTooBigException(String msg){
super(msg);
}
}
class ExceptionDemo3{
public static void main(String[] args) //1. throws AgeTooSmallException, AgeTooBigException{
Person p = new Person();
try{
p.setAge(100);
}
catch (Exception e){
print("有问题");
}
catch(AgeTooBigException e){ //编译错误 不可达 异常越具体越细节 往前放 上下调换顺序才可以
//如果之间没有继承关系 那就无所谓了不存在交叉情况
print("年龄太大了");
}
print("over");
}
}
------------------------------
可以有多个catch语句,catch顺序需要注意
子类异常要先行catch,否则代码不可达 编译也无法通过
--------------------------------
Triangle(int a, int b, int c)非法编程 无法构造三角形 自定义异常
构造函数可以抛出异常 通过构造函数定义异常信息
InvalidEdgeException()
-----------------------------------------
RuntimeException声明运行时异常不需要在方法的定义中
--------------------------
class AgeTooBigException extends RuntimeException{ //定义成运行时异常
public AgeTooBigException(){
}
public AgeTooBigException(String msg){
super(msg);
}
}
class ExceptionDemo3{
public static void main(String[] args)throws AgeTooSmallException{//, AgeTooBigException{
//
Person p = new Person();
try{
p.setAge(100);
}
catch (Exception e){
print("有问题");
}
catch(AgeTooBigException e){ //编译错误 不可达 异常越具体越细节 往前放 上下调换顺序才可以
//如果之间没有继承关系 那就无所谓了不存在交叉情况
print("年龄太大了");
}
print("over");
}
}
class Person{
private int age;
public int getAge(){
return age;
}
public void setAge(int age) throws AgeTooSmallException{ //因为RuntimeException 不需要抛出了, AgeTooBigException{
if(age<0){
throw new AgeTooSmallException("too young");
if(age>200){
throw new AgeTooBigException("too old");
}
this.age=age;
this.age = age;
}
}
--------------------------------------------
class Student extends Person throws /*InvalidAgeException,*/ AgeTooSmallException{
//student 没加TooSmall异常时候 setAge 无法覆盖 Person里面的
//因为toobig 异常是runtime 所以不需要机上 但是 AgeTooSmall不是rumtime要加上
//但是加上TooSmall还是错误 因为InvildAgeException父类没有定义 子类不能加上新的异常
//只能在抛原来异常的基础上细化 方法在重写时 不能声明抛出新的异常类型 只能原来异常类型体系(异常子类)
//比如父类 异常 保护国家动物 子类 保护大熊猫
// 让非法年龄异常 继承 toosmall异常
public void setAge(int age){
if(age<6 || age>15){
throw new InvalidAgeException();
}
//this.age=age; //age是private 所以编译失败
//super.setAge(age);//还是编译错误 AgeTooSmall 不能识别 必须加上异常
print("设置年龄");
}
}
//class InvalidAgeException extends Exception{
class InvalidAgeException extends AgeTooSmallException{
private String info;
public InvalidAgeException(String info){
this.info = info;
}
public void outInfo()
print(info);
}
}
--------------------------------------------------------
try里面创建的对象 try外面是看不见的
想用某个对象 一定要放在外面
--------------------------------------------------
异常被一个捕获了 就不会在另一个catch捕获了
有点像switch 但是switch要加break;更确切说像if else
还有catch顺序很关键 要从小到大
运行时异常 不要try catch 也不需要 抛出异常throws
--------------------------------------------------
public AgeTooSmallException(){
}
public AgeTooSmallException(String msg){
super(msg);
}
}
class AgeTooBigException extends Exception{
public AgeTooBigException(){
}
public AgeTooBigException(String msg){
super(msg);
}
}
class ExceptionDemo3{
public static void main(String[] args) //1. throws AgeTooSmallException, AgeTooBigException{
Person p = new Person();
try{
p.setAge(100);
}
catch (Exception e){
print("有问题");
}
catch(AgeTooBigException e){ //编译错误 不可达 异常越具体越细节 往前放 上下调换顺序才可以
//如果之间没有继承关系 那就无所谓了不存在交叉情况
print("年龄太大了");
}
print("over");
}
}
------------------------------
可以有多个catch语句,catch顺序需要注意
子类异常要先行catch,否则代码不可达 编译也无法通过
--------------------------------
Triangle(int a, int b, int c)非法编程 无法构造三角形 自定义异常
构造函数可以抛出异常 通过构造函数定义异常信息
InvalidEdgeException()
-----------------------------------------
RuntimeException声明运行时异常不需要在方法的定义中
--------------------------
class AgeTooBigException extends RuntimeException{ //定义成运行时异常
public AgeTooBigException(){
}
public AgeTooBigException(String msg){
super(msg);
}
}
class ExceptionDemo3{
public static void main(String[] args)throws AgeTooSmallException{//, AgeTooBigException{
//
Person p = new Person();
try{
p.setAge(100);
}
catch (Exception e){
print("有问题");
}
catch(AgeTooBigException e){ //编译错误 不可达 异常越具体越细节 往前放 上下调换顺序才可以
//如果之间没有继承关系 那就无所谓了不存在交叉情况
print("年龄太大了");
}
print("over");
}
}
class Person{
private int age;
public int getAge(){
return age;
}
public void setAge(int age) throws AgeTooSmallException{ //因为RuntimeException 不需要抛出了, AgeTooBigException{
if(age<0){
throw new AgeTooSmallException("too young");
if(age>200){
throw new AgeTooBigException("too old");
}
this.age=age;
this.age = age;
}
}
--------------------------------------------
class Student extends Person throws /*InvalidAgeException,*/ AgeTooSmallException{
//student 没加TooSmall异常时候 setAge 无法覆盖 Person里面的
//因为toobig 异常是runtime 所以不需要机上 但是 AgeTooSmall不是rumtime要加上
//但是加上TooSmall还是错误 因为InvildAgeException父类没有定义 子类不能加上新的异常
//只能在抛原来异常的基础上细化 方法在重写时 不能声明抛出新的异常类型 只能原来异常类型体系(异常子类)
//比如父类 异常 保护国家动物 子类 保护大熊猫
// 让非法年龄异常 继承 toosmall异常
public void setAge(int age){
if(age<6 || age>15){
throw new InvalidAgeException();
}
//this.age=age; //age是private 所以编译失败
//super.setAge(age);//还是编译错误 AgeTooSmall 不能识别 必须加上异常
print("设置年龄");
}
}
//class InvalidAgeException extends Exception{
class InvalidAgeException extends AgeTooSmallException{
private String info;
public InvalidAgeException(String info){
this.info = info;
}
public void outInfo()
print(info);
}
}
--------------------------------------------------------
try里面创建的对象 try外面是看不见的
想用某个对象 一定要放在外面
--------------------------------------------------
异常被一个捕获了 就不会在另一个catch捕获了
有点像switch 但是switch要加break;更确切说像if else
还有catch顺序很关键 要从小到大
运行时异常 不要try catch 也不需要 抛出异常throws
--------------------------------------------------
阅读全文
0 0
- 异常2
- 异常2
- 异常2
- 异常2
- 异常2 (使用自定义异常)
- 此异常非彼异常(续2)
- 读书笔记--异常处理(2)
- C++异常处理 2
- struts1.2异常处理
- 异常处理-2
- struts1,2异常处理
- Python3.2 --- 异常处理
- 异常处理2
- mysql5异常处理(2)
- java 异常 【2】
- NIO异常新动向2
- JAVA异常处理(2)
- Struts 2 全局异常
- uva116单向TSP 多段图dp
- codeforces 839A 428 Div2 B Game of the Rows
- 做好产品需要了解哪些呢?
- 如何使用C++递归来实现查找BST(Binary Search Tree)的最大高度
- 异常1
- 异常2
- PAT 1008. 数组元素循环右移问题 (技巧解法,后续会补充非技巧解法)
- 包
- codeforces 839C Div428B Journey
- 【云服务器】安装SSL证书,使用HTTPS协议
- jar打包
- Arishmoon Tony的高考素材本.1
- 数据结构:循环队列(C语言实现)
- 半句傾心 一句鐘情2016.3.25