java中,我自己创建了一个异常类(直接继承Exception),throw 之后可以被捕获但程序却在继续运行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中,我自己创建了一个异常类(直接继承Exception),throw 之后可以被捕获但程序却在继续运行相关的知识,希望对你有一定的参考价值。

java中,我自己创建了一个异常类(直接继承Exception),throw 之后可以被捕获但程序却在继续执行后面的代码
try
a = Motors.choseMotors(x,p.pd);
catch (Exception e1)
e1.printStackTrace();

因为被捕获了,所以才会继续运行。
就相当于 一个公司(一个完整的程序)中的某一个员工(一段代码)发现了一个错误并处理了(显示出来或者是丢弃了),没有上报(没有 throw ),公司还是会正常运行下去的。
try
a = Motors.choseMotors(x,p.pd);
catch (Exception e1)
e1.printStackTrace();
throw e1;//添加上这一句试试

//员工上报了 throw ,公司领导知道后发现是个大问题,就会停工检查
参考技术A 你好,你用了try/catch,捕获了异常之后,try/catch后面代码就是会继续执行啊,如果代码放在try里边,就只会执行到有异常的地方,后面不再继续执行 参考技术B catch (Exception e1)它包含所有的错误种类,比如你抛出某个异常,但程序执行时产生了另外一种异常就会被捕获,去看看java的异常机制吧,有的异常是可以被忽略的,不过你既然抛出异常了为什么还要写try catch?

java随手笔记二之继承

继承:
extends
从一个类中创建出新类,新类---子类,原有的类---父类,超类,基类
子类继承父类,子类就拥有了父类中的内容(除构造器外),同时子类还可以拥有自己特有的内容。
一个父类可以有多个子类,一个子类只能有一个父类---java单继承。
优点:
1.创建更特殊的类型
2.消除代码的重复问题
3.便于可维护性和提高扩展性
子类继承父类,包括私有成员,但是在子类中不能直接访问继承的私有成员,必须通过公共访问方式。
 
方法覆盖/重写:
在子类中,出现了和父类相同的方法,但是方法体内容不同,建立子类对象,调用该方法,运行的是子类的内容。
注意方法重写和方法重载的区别方法重载和父类无关,同名方法 参数列表不同。
要求:
1.必须有子父类
2.子类重写方法时,访问控制修饰符必须大于等于父类
3.方法签名必须一致
jdk5.0 子类重写方法的返回值类型可以是父类该方法返回值类型的子类类型
4.被重写方法不应是private
super:代表父类对象的引用
this:代表当前类对象的引用
调用父类构造器:
在子类构造器的第一行有一条隐式的super()语句。
该语句的作用:
1.调用父类无参数的构造器
2.用来初始化子类继承的属性
3.如果子类构造器第一行不是this(...)或者super(...)
 
注意:this(...)或者super(...)在构造器中只能出现一次,并且在构造器的第一行。
class test
{
public static void main(String[] args)
{
PC p = new PC("red");
System.out.println(p.color);
System.out.println(p.getDetails());
System.out.println(p.say());
System.out.println(p.getDetails());
}
}
 
class Computer
{
private String cpu;
int memory;
int hardDisk;
public String getDetails(){
return memory+" "+hardDisk;
}
public Computer(String cpu,int memory,int hardDisk){
this.cpu = cpu;
this.memory = memory;
this.hardDisk = hardDisk;
}
public Computer(String cpu){
this("i5",4,250);
}
 
String say(){
return cpu+" "+memory+" "+hardDisk;
}
}
 
class PC extends Computer
{
String color;
public PC(String cpu,String color){
super(cpu);
this.color = color;
}
 
public PC(String color){
this("i7",color);
}
 
@Override
public String getDetails(){
return color+" "+ say();
}
}
class Notepad extends Computer
{
int size;
public Notepad(String cpu,int size){
super(cpu);
size = 14;
}
 
public int getSize(){
return size;
}
}
UML:称为统一建模语言,用图形符号表示面向对象元素的图形化语言。
类图:用一个矩形来表示。
第一部分:类名框
第二部分:属性框
权限修饰符 属性名 : 数据类型
第三部分:方法框
权限修饰符 方法名 : 返回值类型
权限修饰符:
public : +
protected : #
default :~或空
private : -
 

以上是关于java中,我自己创建了一个异常类(直接继承Exception),throw 之后可以被捕获但程序却在继续运行的主要内容,如果未能解决你的问题,请参考以下文章

自定义异常

自定义异常

通过异常处理错误(中)

java 第51节 定义自己的异常

自定义异常

访问属性时出现 EXC_BAD_ACCESS 异常