JAVA中什么情况下会产生异常?
1个回答
展开全部
java产生异常的情况有很多种,比如说你想把一个字符串型“123”转成int型123,ok,这样没有问题。代码如下:\x0d\x0aString a = "123";\x0d\x0aint b = Integer.parseInt(a);\x0d\x0a但是如果你尝试如下写法\x0d\x0aString a = "abc";\x0d\x0aint b = Integer.parseInt(a);\x0d\x0a编译器是不会给你提示任何错误,只有等程序真正运行到此处的时候,才会发生异常,以为parseInt无法将字符串"abc"转成int型。\x0d\x0a我举得例子只是异常中的一种\x0d\x0a另外,Java 异常的种类有三大类,可分为可检测异常,非检测异常和自定义异常。\x0d\x0a可检测异常\x0d\x0a可检测异常经编译器验证,对于声明抛出异常的任何方法,编译器将强制执行处理或声明规则,例如:sqlExecption 这个异常就是一个检测异常。你连接 JDBC 时,不捕捉这个异常,编译器就通不过,不允许编译。\x0d\x0a非检测异常\x0d\x0a非检测异常不遵循处理或声明规则。在产生此类异常时,不一定非要采取任何适当操作,编译器不会检查是否已解决了这样一个异常。例如:一个数组为 3 个长度,当你使用下标为3时,就会产生数组下标越界异常。这个异常 JVM 不会进行检测,要靠程序员来判断。有两个主要类定义非检测异常:RuntimeException 和 Error。\x0d\x0aError 子类属于非检测异常,因为无法预知它们的产生时间。若 Java 应用程序内存不足,则随时可能出现 OutOfMemoryError;起因一般不是应用程序的特殊调用,而是 JVM 自身的问题。另外,Error 一般表示应用程序无法解决的严重问题。\x0d\x0aRuntimeException 类也属于非检测异常,因为普通 JVM 操作引发的运行时异常随时可能发生,此类异常一般是由特定操作引发。但这些操作在 Java 应用程序中会频繁出现。因此,它们不受编译器检查与处理或声明规则的限制。\x0d\x0a自定义异常\x0d\x0a自定义异常是为了表示应用程序的一些错误类型,为代码可能发生的一个或多个问题提供新含义。可以显示代码多个位置之间的错误的相似性,也可以区分代码运行时可能出现的相似问题的一个或者多个错误,或给出应用程序中一组错误的特定含义。例如,对队列进行操作时,有可能出现两种情况:空队列时试图删除一个元素;满队列时试图添加一个元素。则需要自定义两个异常来处理这两种情况。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询