相信作为程序员的我们在对程序进行编译过程中经常会遇到错误,或者在运行过程中出现错误,在这里主要跟大家谈谈经常遇到的一些异常与错误,以及解决办法。
异常是指程序在编译或运行过程出现的错误。
在java.lang包中Throwable包含了所有的异常。
Error (错误) 和Exception(异常)
(1)Error(错误)
一旦发生无法修复,但可以避免发生。
常见错误类:
IOError:I/O错误,当发生严重的I/O错误时,抛出此错误。
VirtualMachineError :虚拟机错误,当 Java 虚拟机崩溃或用尽了它继续操作所需的资源时,抛出该错误。
StackOverflowError:栈内存满了,当应用程序递归太深而发生堆栈溢出时,抛出该错误。
OutofMemoryError:堆内存满了,因为内存溢出或没有可用的内存提供给垃圾回收器时,Java 虚拟机无法分配一个对象,这时抛出该异常。
以上是一些常见的错误,在Error类中还有一些别的错误(参照文件Java.lang.Throwable.Error).
(2)Exception(异常)
一旦发生,可以捕获并处理,不会导致程序终止,有时可以避免有时无法避免。
异常的分类:
1.编译时异常(需要强制处理) 2.运行时异常(不需要强制处理)
常见的异常有:
IOException:输入输出流异常
FileNotFoundException:文件找不到的异常
ClassNotFoundException:类找不到的异常
DataFormatException:数据格式化异常
NoSuchFieldException:没有匹配的属性异常
NoSuchMethodException:没有匹配的方法异常
SQLException:数据库操作异常
TimeoutException:执行超时异常
常见的运行时异常:
RuntimeException:运行时异常
NullPointerException:空指针异常
ArrayIndexOutofBoundsException:数组越界异
ClassCastException:类型转换异常
IllegalArgumentException:非法的参数异常
InputMismatchException:输入不匹配
以上是常见的一些异常,另外还有别的异常,参见文件:Java.lang.Throwable.Exception
既然我们常常会遇到一些异常,那我们如何来处理这些异常就是一个急需解决的事情。
(1) 如何处理编译时异常?
方法一:将需要处理的代码块放在一个try...catch...中
try{
//需要处理异常的代码
}catch(XXXException ef){
ef.printStackTrace();
}
我们方法一就是要将我们不确定的代码放入try......catch中,先进行try一下,如果没有异常,则不会触发catch,没有输出,一旦出现异常,那么catch就会工作,在catch中捕获异常信息,根据异常信息进行补救措施。
如以下代码:
public static void main(String[] args) { try{ //创建一个读取文件数据的对象 FileOutputStream f = new FileOutputStream ("C:\\Users\\abc\\Desktop\\aa.txt"); }catch(Exception ex){ //输出异常信息 //ex.printStackTrace(); System.out.println("找不到文件!!请想别的办法"); } }
方法二:在出现异常的方法上直接向上抛出异常,throws
void ff() throws XXXException{
}
将出现的异常的代码中,放入如上的方法中,就会将异常抛给该方法的上一级,在主函数上继续向上抛,最终抛给JVM java虚拟机,让JVM来解决该问题。
如代码:
public class Demo3 { //在主函数中可以继续往上抛,抛给了JVM public static void main(String[] args) throws Exception{ Demo3 d = new Demo3(); d.change(); } //将异常抛给调用change的方法处理 public void change() throws Exception{ read(); } //将异常抛给调用read的方法处理 public void read() throws Exception{ FileOutputStream f = new FileOutputStream("C:\\Users\\abc\\Desktop\\aa.txt"); } }
注意:在catch和throws的时候如果不确定是什么异常,就直接写一个Exception.
(2) 如何处理运行时异常?
1.一般情况下,运行时异常是不用处理的
2.在某些情况下,如果对发生异常的结果进行处理,也可以对运行时异常进行try...catch...
以上就是一些我们处理编译时异常和运行时异常的方法。
在程序出现异常时,有时候我们可以自定义异常,以便我们能够发现是什么异常。
那么如何自定义异常??
1.当运行时,程序出现意外,可以抛出异常对象来结束程序
如:
//抛出运行时异常对象
RuntimeException ef = new RuntimeException("下标越界!index:"+index+" ,size:"+size());
throw ef;
2.对于编译时异常,同样可以抛出异常对象
但在方法定义时候必须加上throws
如:
public void test(int t) throws Exception{
if (t < 0 || t > 100) {
Exception ef = new Exception("数据错误");
throw ef;
}
}
例如:
方法: public class Demo5 { public void change(int t) { if (t < 0 || t > 100) { RuntimeException ef = new RuntimeException("数据错误"); throw ef; } } public void test(int t) throws Exception{ if (t < 0 || t > 100) { Exception ef = new Exception("数据错误"); throw ef; } } }
测试上述方法: public class Demo5Test { public static void main(String[] args) { Demo5 d = new Demo5(); d.change(200); try { d.test(200); } catch (Exception ef) { ef.printStackTrace(); } } }
运行结果:
Exception in thread "main" java.lang.RuntimeException: 数据错误 at cjl.exception.Demo5.change(Demo5.java:9) at cjl.exception.Demo5Test.main(Demo5Test.java:6)
从结果可以看出,我们在输入数据的时候出现错误,这样通过自定义异常能够让我们更直接快速的找到运行或编译时的异常。
在上述中我们分别提到了三种throw,分别是Throwable,Throws以及throw,那么到底三者有什么区别?
Throwable:是指在在Java.lang包中的一个类,其包含了所有的异常和错误,其中类Error和Exception 是它
的子类。
Thows:是指在解决编译时异常,将方法中异常抛给上一级,在方法后面要加Throw Exception来进行抛。
throw:是指在自定义异常时,如果方法出现异常,那么将作为引用方法的对象抛出。即抛出异常。
相关推荐
在Java编程过程中,开发者常常会遇到各种各样的异常和错误,这些异常和错误可能会导致程序运行不稳定或者直接崩溃。理解这些异常和错误的本质及处理方法对于提高代码质量至关重要。下面将详细介绍几种常见的Java异常...
在Java编程语言中,`java.lang.Throwable` 是所有错误(Error)和异常(Exception)的顶级父类,它是异常处理机制的基础。`Throwable` 类提供了封装异常信息的方法和属性,使得开发者能够对程序中出现的问题进行捕获...
在这个论文中,我们将深入探讨Java编程中的异常处理方法和技巧,帮助开发人员在程序设计中更好地使用异常处理机制,提高程序的健壮性、可靠性和安全性。 本文的结构如下: 1. Java异常处理机制 2. 异常类 3. 抛出...
异常是程序执行过程中遇到的意料之外的状况,它们可能因外部因素(如用户输入错误)或内部逻辑错误而触发。在Java中,“异常”一词意味着“我对此感到意外”,表明当前环境无法处理此问题,需要将其抛出,寻找更高...
Java作为一种广泛使用的编程语言,其设计之初就考虑到了程序在运行过程中可能遇到的各种异常情况。为了更好地控制这些异常,Java提供了一套完善的异常处理机制,使得开发者能够在编写程序时有效地管理错误和异常情况...
在Java编程中,异常处理是一种用于处理程序运行过程中可能出现的错误或意外情况的重要机制。它可以帮助开发者更好地控制程序流,确保程序即使在遇到错误的情况下也能优雅地进行处理或者终止。 #### 核心概念解析 1...
JAVA程序设计中的异常和断言是程序开发过程中的重要概念,它们帮助开发者处理程序运行时可能出现的问题,确保程序的稳定性和可靠性。 异常处理是JAVA语言中的一个关键特性,用于处理程序执行过程中出现的非正常情况...
在Java编程中,异常处理机制是用来应对程序运行时可能遇到的错误或不正常情况。`Throwable` 类是Java异常处理的基础,它包括 `Error` 和 `Exception` 两大类。当程序运行遇到问题时,会创建一个表示异常的 `...
Java中的异常处理是编程中非常重要的一个环节,它主要用于处理程序运行时可能出现的错误和问题。异常处理使得程序更加健壮,能够优雅地处理错误,而不是简单地崩溃。本章内容将围绕Java异常处理机制展开,包括理解...
异常是Java程序中的一种错误处理机制,用于捕获和处理运行时错误。在Java中,异常可以分为两大类:checked异常和unchecked异常。checked异常是编译器强制检查的异常,unchecked异常是运行时异常。在本文中,我们将对...
Java编程中的异常处理是编程实践中不可或缺的一部分,它关乎程序的健壮性和稳定性。本文主要讨论了Java异常处理的三个层次:好、不好和恶劣的处理方式,并提供了相关的处理技巧。 首先,我们需要理解Java异常的基本...
Java异常处理是Java编程语言中的一个关键特性,它关乎到程序的健壮性和可靠性。Java异常处理机制使得程序在遇到错误或不正常情况时能够优雅地处理问题,而不是突然崩溃,这对于任何Java开发者来说都是必须掌握的核心...
异常处理是Java编程中的关键组成部分,它允许程序员优雅地处理程序执行过程中可能出现的错误或不正常情况。通过异常处理,程序可以在遇到问题时中断当前流程,执行预定义的恢复操作,或者至少提供有用的错误信息,而...
Java程序设计中的异常处理是编程过程中至关重要的一环,它确保了程序在遇到错误或异常情况时能够优雅地处理问题,而不是突然崩溃。异常处理的概念基于Java的异常类层次结构,这是Java语言的一个特色,旨在提高代码的...
Java异常处理是编程中至关重要的一个环节,它确保了程序在遇到错误时能够优雅地运行,而不是突然崩溃。本实验报告“java实验报告4-异常处理”旨在帮助初学者掌握Java中的异常处理机制,以及如何利用log4j进行日志...
Java异常处理是编程中至关重要的一个环节,它关乎程序的健壮性和稳定性。...异常处理是Java编程中的核心技能,对于构建健壮的系统至关重要。通过学习和实践,你可以更好地应对各种运行时错误,提高代码的可靠性。
异常处理是Java编程中不可或缺的一部分,它确保了程序在遇到错误时能够优雅地处理,避免程序崩溃,同时提供反馈信息,便于调试和修复问题。通过合理的异常处理,开发者可以编写出更健壮、更易于维护的代码。
Java的异常处理机制是Java编程中至关重要的一部分,它主要用于处理程序在运行时可能出现的各种错误和异常情况。这一机制使得开发者能够优雅地处理错误,而不会让整个程序崩溃。以下是关于Java异常处理机制的详细说明...
Java程序的错误类型和异常处理是编程过程中必不可少的环节,主要分为语法错误、运行错误和逻辑错误三类。下面将详细阐述这三种错误及其处理方式。 1. 语法错误 语法错误是最直观的错误类型,它发生在编程时输入的...