说明Error与Exception的联系和区别有哪些? 列举最常见的5个运用时异常。
时间: 2024-05-21 18:16:36 浏览: 153
Error和Exception都是Java中的异常类,其中Error表示系统级别的错误,通常是由JVM引起的,例如OutOfMemoryError、StackOverflowError等;而Exception则表示程序运行时的异常,可以通过代码来处理,例如NullPointerException、ArrayIndexOutOfBoundsException等。
常见的5个运行时异常包括:
1. NullPointerException:当应用程序试图在需要对象的地方使用 null 时,将抛出该异常。
2. ArrayIndexOutOfBoundsException:表示数组下标越界异常,当应用程序试图访问数组的无效索引时,将抛出该异常。
3. ClassCastException:表示类型转换异常,当试图将对象强制转换为不是实例的子类时,将抛出该异常。
4. IllegalArgumentException:表示非法参数异常,当向方法传递了一个不合法或不正确的参数时,将抛出该异常。
5. ArithmeticException:表示算术异常,当出现除数为0的情况时,将抛出该异常。
相关问题
1. 简述Error与Exception的区别。 2. 简述关键字throw与throws的含义。 3. 列举常用的RuntimeException并解释其用法。 4. 如何将字符串转换为基本数据类型?如何将基本数据类型转换为字符串? 5. 简述String、StringBuffer、StringBuilder用法与区别。 6. List、Set、Map三个接口,存取元素时各有什么特点? 7. Java 8时间操作相对旧版时间操作做了哪些改进? 8. 简述线程调度的方式及其用法。 9. 在多线程中,为什么要引入同步机制?并解释synchronized关键字的用法。 10. 简述sleep()方法和wait()方法的区别。 11. 请简要描述TCP Socket通信过程。 12. 试比较Statement对象与PreparedStatement对象的区别。
1. Error与Exception的区别:
- Error是由JVM抛出的,通常表示系统级别的错误,如OutOfMemoryError、StackOverflowError等,这些错误无法被程序捕获和处理。
- Exception是由程序抛出的,通常表示应用级别的异常,如NullPointerException、IOException等,这些异常可以被程序捕获并进行处理。
2. throw与throws的含义:
- throw关键字用于抛出异常对象,通常在方法中手动抛出异常。
- throws关键字用于声明方法可能抛出的异常类型,通常在方法声明中使用。
3. 常用的RuntimeException包括NullPointerException、IndexOutOfBoundsException、IllegalArgumentException等,这些异常通常表示程序中的逻辑错误,可以被程序员避免或修复。
4. 将字符串转换为基本数据类型可以使用对应的parseXXX方法,如Integer.parseInt()、Double.parseDouble()等。将基本数据类型转换为字符串可以使用对应的toString方法,如Integer.toString()、Double.toString()等,或者使用字符串拼接的方式。
5. String、StringBuffer、StringBuilder都是字符串类型,其中String是不可变的,而StringBuffer和StringBuilder是可变的,StringBuilder相比StringBuffer在单线程环境下性能更好。通常情况下,如果需要频繁地对字符串进行修改,推荐使用StringBuilder,否则使用String。
6. List接口是有序的,并且允许元素重复;Set接口是无序的,并且不允许元素重复;Map接口是以键值对的形式存储元素,键不允许重复,值可以重复。
7. Java 8时间操作相对旧版时间操作做了如下改进:
- 引入了新的java.time包,提供了更丰富的时间操作API;
- 新的API支持时区、日历系统等功能;
- 新的API中引入了新的时间类LocalDate、LocalTime、LocalDateTime等,这些类分别表示日期、时间和日期时间。
8. 线程调度的方式包括:
- 抢占式调度:操作系统会根据线程的优先级、状态等信息决定哪个线程优先执行;
- 合作式调度:线程需要显式地释放CPU资源,才能让其他线程执行。
9. 在多线程中引入同步机制的目的是为了保证多个线程之间的数据同步,防止出现数据不一致的情况。synchronized关键字可以用于修饰方法或代码块,表示对这些方法或代码块进行同步,只有获取到锁的线程才能执行。
10. sleep()方法会让当前线程进入阻塞状态,等待指定的时间后再继续执行;wait()方法会让当前线程进入阻塞状态,并且释放锁资源,直到其他线程调用notify()或notifyAll()方法唤醒该线程。
11. TCP Socket通信过程:
- 服务端创建ServerSocket并监听端口;
- 客户端创建Socket并连接服务端;
- 服务端接收到连接请求后,创建对应的Socket对象和输入输出流;
- 客户端和服务端通过输入输出流进行通信;
- 通信结束后,客户端和服务端分别关闭Socket和输入输出流。
12. Statement对象与PreparedStatement对象的区别:
- Statement对象在执行SQL语句时会将SQL语句发送给数据库执行,存在SQL注入攻击的风险;
- PreparedStatement对象在创建时会对SQL语句进行预编译,并且可以使用占位符进行参数绑定,可以有效避免SQL注入攻击。
列举40个java应用可能出现的异常,并说明它的涵义
1. NullPointerException - 当试图在一个空对象上调用方法或访问属性时抛出。
2. ArrayIndexOutOfBoundsException - 当数组索引超出有效范围时抛出。
3. ClassCastException - 当试图将一个对象强制转换为不兼容的类时抛出。
4. IllegalArgumentException - 当方法传递了不合法或不正确的参数时抛出。
5. IllegalStateException - 对象状态不合法时抛出,例如当在错误的时间调用方法时。
6. ArithmeticException - 在算术运算过程中抛出,例如除以零。
7. ConcurrentModificationException - 当一个对象被多个线程同时修改时抛出。
8. IOException - 在输入/输出操作中出现问题时抛出。
9. FileNotFoundException - 尝试打开一个不存在的文件时抛出。
10. SecurityException - 安全限制阻止了代码的执行时抛出。
11. SQLException - 在访问数据库时出现问题时抛出。
12. NumberFormatException - 当字符串无法转换为数字时抛出。
13. NoSuchElementException - 在没有更多元素时调用迭代器的next()方法时抛出。
14. InterruptedException - 在线程被中断时抛出。
15. UnsupportedOperationException - 当不支持特定操作时抛出。
16. XmlPullParserException - 解析XML时出现问题时抛出。
17. JSONException - 在JSON解析过程中出现问题时抛出。
18. ClassNotFoundException - 当试图加载类而找不到它时抛出。
19. IllegalAccessException - 当试图访问私有方法或字段时抛出。
20. InstantiationException - 当试图实例化抽象类或接口时抛出。
21. NoSuchMethodException - 当试图访问不存在的方法时抛出。
22. OutOfMemoryError - 在JVM内存不足时抛出。
23. StackOverflowError - 当JVM栈空间不够时抛出。
24. AssertionError - 断言失败时抛出。
25. EnumConstantNotPresentException - 当试图访问不存在的枚举常量时抛出。
26. VerifyError - 当类文件格式无效或无法验证时抛出。
27. UnsatisfiedLinkError - 当动态链接库无法加载或找不到时抛出。
28. NoClassDefFoundError - 当缺少类文件或类文件无法加载时抛出。
29. NoSuchFieldError - 当访问不存在的字段时抛出。
30. NoSuchMethodError - 当调用不存在的方法时抛出。
31. AssertionError - 断言失败时抛出。
32. IllegalMonitorStateException - 当非法地尝试获得、释放对象监视器时抛出。
33. IllegalThreadStateException - 当线程状态不恰当时尝试使用线程操作方法时抛出。
34. IncompatibleClassChangeError - 在改变类时导致已链接的类和源不再兼容时抛出。
35. InternalError - JVM内部出现了问题时抛出。
36. LinkageError - 在链接期间发生错误时抛出。
37. NoSuchProviderException - 请求的服务提供者不存在时抛出。
38. ReflectiveOperationException - 访问异常,与反射相关的异常的父类。
39. TypeNotPresentException - 当试图使用不存在的类型时抛出。
40. UnsatisfiedDependencyException - 当Spring框架中的一个bean无法满足其所声明的所有依赖时抛出。
阅读全文