A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 闫玉泉 黑马帝   /  2012-2-27 08:17  /  1899 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 闫玉泉 于 2012-2-27 18:00 编辑

一般异常和运行时异常区别? 能举例子吗?

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

6 个回复

正序浏览
Akm 黑马帝 2012-2-27 20:00:36
7#
  这也是面试时,常见的问题之一。
  Error表示系统级的错误和程序不必处理的异常,
  Exception表示需要捕捉或者需要程序进行处理的异常;

  一般异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。常见错误如:
  java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
一般异常和运行时已成的写法不同
一般异常在编译的时候要报错是通不过的
运行时异常编译可以通过,在运行的时候才报错
回复 使用道具 举报
石德志 来自手机 黑马帝 2012-2-27 18:40:24
报纸
编译时编译器能检查出来的可能发生的异常异常check Exception,要求我们必须处理或声明抛出,编译器检查不出来的,在运行时期发生的不确定的异常runtime Exception,太不确定不要求我们处理
回复 使用道具 举报
仵先进 发表于 2012-2-27 10:00
Java提供了两类主要的异常:runtime exception和checked exception。checked 异常也就是我们经常遇到的IO异 ...

你的回答我明白了 谢谢
回复 使用道具 举报
Java提供了两类主要的异常:runtime exception和checked exception。checked 异常也就是我们经常遇到的IO异常,以及SQL异常都是这种异常。对于这种异常,JAVA编译器强制要求我们必需对出现的这些异常进行catch。所以,面对这种异常不管我们是否愿意,只能自己去写一大堆catch块去处理可能的异常。   

    但是另外一种异常:runtime exception,也称运行时异常,我们可以不处理。当出现这样的异常时,总是由虚拟机接管。比如:我们从来没有人去处理过NullPointerException异常,它就是运行时异常,并且这种异常还是最常见的异常之一。

评分

参与人数 1技术分 +2 收起 理由
admin + 2

查看全部评分

回复 使用道具 举报
{
        int plus(int a,int b)
        {
                if(b==0)
                   throw new ArithmeticException("被零除了");
                return a/b;
        }
}

class ExceptionDemo
{
        public static void main(String[] args)
        {
                Demo d = new Demo();
                int x = d.plus(3,0);
                System.out.println("x=" + x);
        }
}这里就是 运行时异常,RuntimeException 的子类异常ArithmeticException。

在这里发现ArithmeticException这个异常非常特殊,在函数内抛了不用在函数上声明

Exception 中有一个特殊的子类异常RuntimeException  运行时异常。
如果在函数内抛出异常,函数上可以不用声明,编译一样通过。

如果在函数上声明了异常,调用者可以不用进行处理,编译一样通过。

之所以不用在函数上声明,是因为不需要上调用者处理,
当该异常发生,希望程序停止。因为在运行时,出现了无法继续运算的情况,希望停止程序后,对代码进行修正。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马