子线程执行System.exit(0),会停止主线程。
成都创新互联主要从事网站设计制作、成都做网站、网页设计、企业做网站、公司建网站等业务。立足成都服务竹溪,十余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18980820575
整个当前java进程会结束。所以进程中的所有线程也会随时结束。
不过不理解你为什么需要这种需求,这不是什么好的处理异常的方式。
try{
//操作数据库代码
}catch(Exception e){
if(e.getMessage().indexOf("U_TEACHER")0){
System.out.println("是关于违反Oracle一个唯一性约束U_TEACHER");
}else if(e.getMessage().indexOf("U_ROOM")0){
System.out.println("是关于违反Oracle一个唯一性约束U_ROOM");
}
}
首先,什么是面向接口编程?我想你理解片面了,举个简单的例子,如:
ArrayList l = new ArrayList();
像这样就是面向实现编程,我们希望面向接口编程,如下:
List l = getContainer("java.util.Vector");
其中的getContainer可能有这样一个实现
public List getContainer(String listName) throws Exception {
return (List)Class.forName(listName).newInstance();
}
像上面的例子中,你可以把ArrayList的对象赋值给List的引用,也可以把Vector或是Stack等的对象赋值给List的引用,如果你用
ArrayList l = getContainer("java.util.Vector");
就出错了,没有办法像面向接口编程那样灵活了
面向接口编程的一个目的就是让设计更有灵活性
至于你说的多继承,c++中确实是这种模式,用这种模式,也就不需要接口了。java为什么摒弃这种方式,是为了编程简单,如果你学过c++,你应该知道多重继承带来的方法相同(如a中有个method方法有个默认实现,b中也有个方法method含有默认实现,此时如果c类同时继承a和b就会出现方法冲突)处理是比较麻烦的,编程人员觉得麻烦,编译器的实现也很麻烦。
至于异常问题,如果一个方法出现异常了,表示这个业务出现问题了,还有走下去的意义么?!
比如一个简单银行转账,你从a银行转出,准备转到b银行,而你在转出的时候抛出异常了,转出失败,此时还有必要转进b银行么!
try...catch的作用无非如下几点:
1、try里面的东西对业务影响不大,出错就出错,直接catch掉就得了
2、try里面的东西是业务的核心,一旦抛异常,业务一定就失败了,此时可以catch一下,打个日志什么的,然后异常继续向上抛
3、try里面可能抛出让人难以理解的异常,此时可能需要catch一下,在catch中重新抛出一个容易理解的异常,这相当于异常转换
第一个问题 try块内的代码发生异常后 会执行catch块内的代码,然后再执行finally块内的代码
如不发生异常 try块内的代码执行完后执行 finally块内的代码
第二个问题 如果没有try块 说明是runtime异常,出现异常后出现异常的线程就中断了,异常后边的代码不在执行。