首页 > 试题广场 >

关于异常的编程,以下描述错误的是:( )

[单选题]

关于异常的编程,以下描述错误的是:( )

  • 在有除法存在的代码处,为了防止分母为零,必须抛出并捕获异常
  • int i=Integer.parseInt(”123a”);将产生NumberFormatException
  • int a[]=null; a[0]=1; 将产生NullPointerException
  • 输入输出流编程中,读和写时都要抛出IOException
异常分为运行时异常,非运行时异常和error,其中error是系统异常,只能重启系统解决。非运行时异常需要我们自己补获,而运行异常是程序运行时由虚拟机帮助我们补获,运行时异常包括数组的溢出,内存的溢出空指针,分母为0等!
发表于 2017-05-15 17:10:29 回复(7)
Java的异常分为两种,一种是运行时异常(RuntimeException),一种是非运行异常也叫检查式异常(CheckedException)。
1、运行时异常不需要程序员去处理,当异常出现时,JVM会帮助处理。常见的运行时异常有:
ClassCastException(类转换异常)
ClassNotFoundException
IndexOutOfBoundsException(数组越界异常)
NullPointerException(空指针异常)
ArrayStoreException(数组存储异常,即数组存储类型不一致)
还有IO操作的BufferOverflowException异常
2、非运行异常需要程序员手动去捕获或者抛出异常进行显示的处理,因为Java认为Checked异常都是可以被修复的异常。常见的异常有:
IOException
SqlException
发表于 2018-01-10 11:09:52 回复(3)
分母为0 为运行时异常,jvm帮我们补货,无需代码里面显式捕获
发表于 2017-11-08 23:59:41 回复(12)
这题可能出在那个“并”上了,可以try catch  也可以throw  所以A可能错了
发表于 2017-08-25 17:22:47 回复(11)
对于选项C为什么不是下标越界异常。我是这么理解的,数组和对象都是在堆上分配内存的。创建的对象是通过java栈本地变量表中的reference指向堆中的地址,但是c中并没在堆中开辟内存,所以reference的值为null。当给a[0]=1的时候,reference=null,根本找不到地址,所以抛了空指针异常。在深入理解java虚拟机这本书里面对象的访问定位这一节,有关于堆中创建对象的过程。

编辑于 2018-11-28 09:26:33 回复(3)
a选项中的异常明明可以避免,所以就不用来捕获
b选项可以明显看到字符串不是纯数字,转换成int类型,是要抛出异常的!
c数组定义的就是null,还怎么来赋值!
d还有其他的
Java的异常分为两种,一种是运行时异常(RuntimeException),一种是非运行异常也叫检查式异常(CheckedException)。
1、运行时异常不需要程序员去处理,当异常出现时,JVM会帮助处理。常见的运行时异常有:
ClassCastException(类转换异常)
ClassNotFoundException
IndexOutOfBoundsException(数组越界异常)
NullPointerException(空指针异常)
ArrayStoreException(数组存储异常,即数组存储类型不一致)
还有IO操作的BufferOverflowException异常
2、非运行异常需要程序员手动去捕获或者抛出异常进行显示的处理,因为Java认为Checked异常都是可以被修复的异常。常见的异常有:
IOException
SqlException
发表于 2018-03-23 19:31:13 回复(0)
发表于 2019-04-03 00:40:05 回复(1)
A选项属于运行异常,不是必须要显式处理的。
发表于 2018-07-23 19:40:00 回复(0)
截图来自某位同志


发表于 2018-06-03 20:32:30 回复(0)
这题怎么说呢,之前学异常的时候,就是自定义异常,分母为0,就一看觉得A没毛病,没多想,哈哈哈哈
为了防止分母为零,必须抛出并捕获异常
其实这个jvm早帮我们处理好了,分母为0,会抛出算术异常,属于运行时异常,jvm帮助处理,所以不需要我们去处理,A错误。

常见的运行时异常如下:

  1. NullPointerException - 空指针引用异常
  2. ClassCastException - 类型强制转换异常。
  3. IllegalArgumentException - 传递非法参数异常。
  4. ArithmeticException - 算术运算异常
  5. ArrayStoreException - 向数组中存放与声明类型不兼容对象异常
  6. IndexOutOfBoundsException - 下标越界异常
  7. NegativeArraySizeException - 创建一个大小为负数的数组错误异常
  8. NumberFormatException - 数字格式异常
  9. SecurityException - 安全异常
  10. UnsupportedOperationException - 不支持的操作异常

发表于 2022-04-02 11:10:45 回复(0)
首先分为异常和错误:
        错误不用处理,因为也没法处理
       异常:分为运行时异常、非运行时异常
                运行时异常自己选择是否要 try  catch  ,也可以自己 throw
                非运行时异常就必须得try  catch  或者  throws 
发表于 2018-12-11 14:49:10 回复(0)
就没人解释下其他几项选项吗
发表于 2017-09-01 16:29:22 回复(1)
我觉得D也有错,我直接try捕获不行吗,一定要抛出吗
发表于 2020-07-19 14:20:32 回复(0)
我明明选C,教卷后就选A了,真是醉了
发表于 2018-01-17 14:13:55 回复(0)
别的不说了,但是B是正确的,因为Integer.parseInt()方法只会抛出NumberFormatException,不会抛出空指针异常,不信看源码:
public static int parseInt(String s, int radix) throws NumberFormatException
{ /*  * WARNING: This method may be invoked early during VM initialization  * before IntegerCache is initialized. Care must be taken to not use  * the valueOf method.  */   if (s == null) { throw new NumberFormatException("null");  } if (radix < Character.MIN_RADIX) { throw new NumberFormatException("radix " + radix + " less than Character.MIN_RADIX");  } if (radix > Character.MAX_RADIX) { throw new NumberFormatException("radix " + radix + " greater than Character.MAX_RADIX");  } int result = 0;  boolean negative = false;  int i = 0, len = s.length();  int limit = -Integer.MAX_VALUE;  int multmin;  int digit;   if (len > 0) { char firstChar = s.charAt(0);  if (firstChar < '0') { // Possible leading "+" or "-"  if (firstChar == '-') {
                negative = true;  limit = Integer.MIN_VALUE;  } else if (firstChar != '+') throw NumberFormatException.forInputString(s);   if (len == 1) // Cannot have lone "+" or "-"  throw NumberFormatException.forInputString(s);  i++;  }
        multmin = limit / radix;  while (i < len) { // Accumulating negatively avoids surprises near MAX_VALUE  digit = Character.digit(s.charAt(i++),radix);  if (digit < 0) { throw NumberFormatException.forInputString(s);  } if (result < multmin) { throw NumberFormatException.forInputString(s);  }
            result *= radix;  if (result < limit + digit) { throw NumberFormatException.forInputString(s);  }
            result -= digit;  }
    } else { throw NumberFormatException.forInputString(s);  } return negative ? result : -result; }
编辑于 2017-10-14 23:55:00 回复(1)
a错我觉得就是是挑字眼,应该是可以抛出或者捕获异常
发表于 2017-06-12 17:51:50 回复(2)
运行时异常又叫非检查异常,可以由虚拟机处理啊
发表于 2017-05-21 09:54:23 回复(0)
a怎么错了
发表于 2017-05-17 08:16:50 回复(1)
1.Java的异常有两类 checked exception和unchecked exception
checked exception编译时异常
这类异常通常是由外部环境引起的,无法通过代码来修复,一般用try-catch解决或者用throws往上抛,这类异常有ioecception,sqlecception
unchecked exception运行时异常
这类异常通常是代码逻辑出错了,要自己去解决。分母为0很明显是代码自己出了问题那就是运行时异常,要自己去解决。
2.Integer.parseInt方法是将字符串转换为整数类型并且返回对应的int值,字符串里必须全是数字比如"123",如果有则抛出numberformatexception异常
3.int a[]=null意思是为数组a不分配内存,自然无法赋值
4.Java中输入输出抛出异常的父类就是ioexception,那抛出他自然是没错
发表于 2023-06-09 21:15:28 回复(0)
这是runtimeException ,runtimeException是不能捕捉的,它是能通过编译的
java.lang.ArithmeticException: / by zero
编辑于 2022-09-21 22:03:32 回复(0)