本文目录一览:
- 1、java中error和exception有什么区别
- 2、java不是整数,输出error
- 3、java中error和exception分别有几种?
- 4、java中错误(error)和异常(exception)有什么主要区别?
- 5、Java如何获取Error信息,是error不是Exception
- 6、为什么java运行时候出现这个error?
java中error和exception有什么区别
一、分类不同:
首先从继承方面来说,Error和Exception都是Throwable的子类。Error比Exception更严重,不易通过后续代码处理和修复,不应该被代码catch到的错误。
而Exception是指严重程度较轻的程序问题,相较于Error更容易被后续代码处理和修复的,有些需要通过try catch代码处理,有些不建议通过try catch代码处理。
二、含义不同:
Error就是程序运行时候抛出的最严重级别的错误了,如VirtualMachineError,ThreadDeath。抛出了Error的程序从Java设计的角度来讲,程序基本不可以通过后续代码修复,从而理应终止。
Exception 又分为可检查(checked)异常和不检查(unchecked)异常,可检查异常在源代码里必须显式地进行捕获处理,这是编译期检查的一部分。
好处
让异常处理与业务逻辑的主线分离,我们可以对可以遇见的异常作分支处理,其实将业务逻辑与异常处理分离也是Exception设计的主旨,其次Java Exception 不需要像C语言那样在程序的多个地方去检测同一个错误,并就地作异常的处理,相比老式的错误处理,现行的错误处理的结构则来的更加清晰。
以上内容参考:百度百科-Exception
java不是整数,输出error
学习
java学习第三课:java语法基础(2)(零基础)

小椰奶冻
原创
关注
0点赞·494人阅读
本节学习java的输入输出的各种方法
1.不同类型的接收与输出
package test3;
import java.util.Scanner;//想要实例化scanner对象不报错,要在前面加这个
public class test2 {
public static void main(String args[]) {
// 一、不同类型的输入输出
// 1.实例化Scanner对象
Scanner sc = new Scanner(System.in);
// 2.接收数据
float a = sc.nextInt();// 接收整型数据
float b = sc.nextFloat();// 接收float型数据
double c = sc.nextDouble();// 接收double型数据
String d = sc.next();// 接收字符串类型-多用于中文
// 3.输出数据
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);// 这四种输出类型相同
}
}
登录后复制
2.根据用户的输入(整型数据),输出对应的字符
package test3;
import java.util.Scanner;
public class test4 {
public static void main(String args[]) {
// 二、根据用户的输入(整型数据),输出对应的字符
// 1.实例化Scanner对象
Scanner sc = new Scanner(System.in);
// 2.接收数据
int x = sc.nextInt();
// 根据需求输出
char e = (char) x;
System.out.println(e);
}
}
登录后复制
(在汇编语言中,我们曾经学过:a的ascii值为97,A的为65,且根据英语字母表向后依次对应,在此处可以用到。)
3.输出10进制数字的8进制和16进制表示形式
package test3;
public class test5 {
public static void main(String[] args) {
int x = 109;
// 输出10进制数字的8进制和16进制表示形式
System.out.printf(“%#o\n”, x);// 8进制(“%#o”,x)
System.out.printf(“%#x\n”, x);// 16进制(“%#x”,x)
}
}
登录后复制
4.验证是否为整数
package test3;
import java.util.Scanner;
public class test4 {
public static void main(String args[]) {
// 二、根据用户的输入(整型数据),输出对应的字符
// 1.实例化Scanner对象
Scanner sc = new Scanner(System.in);
// 2.接收数据前,先去验证用户输入的是否为整数,不是整数则用error
if (sc.hasNextInt()) {//用(sc.hasNextInt())验证是否为整数
//如果验证不是整数,则if(!sc.hasNextInt()){ }else{}
int x = sc.nextInt();// 接收到具体变量中
// 根据需求输出
System.out.println(x);
} else {
System.out.println(“error”);
}
}
}
登录后复制
本节习题:
题目一:用户输入一个整数,输出这个整数的8进制表示和16进制表示。如果不为整数,则输出error。
package test3;
import java.util.Scanner;
public class test6 {
public static void main(String[] args) {
// 题目一:用户输入一个整数,输出这个整数的8进制表示和16进制表示。如果不为整数,则输出error
Scanner sc = new Scanner(System.in);
if (sc.hasNextInt()) {// 先判断是否为整数
int a = sc.nextInt();// 接收数据(整数)
System.out.printf(“%#o\n”, a);
System.out.printf(“%#x\n”, a);
} else {
System.out.println(“error”);
}
}
}
登录后复制
题目二:编写程序根据输入的半径,计算圆的周长,计算公式为:周长=2*半径*圆周率。pi为3.14
package test3;
import java.util.Scanner;
public class test7 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 题目二:编写程序根据输入的半径,计算圆的周长,计算公式为:周长=2*半径*圆周率。pi为3.14
if (sc.hasNextFloat()) {//看输入的是不是float类型
float r = sc.nextFloat();
float pi = 3.14f;
double a = 2 * r * pi;
System.out.printf(“%.2f”, a);
} else {
System.out.println(“error”);
}
}
}
java中error和exception分别有几种?
常见的error有:
ArithmeticException(除数为0的异常), BufferOverflowException(缓冲区上溢异常), BufferUnderflowException(缓冲区下溢异常), IndexOutOfBoundsException(出界异常), NullPointerException(空指针异常), EmptyStackException(空栈异常), IllegalArgumentException(不合法的参数异常), NegativeArraySizeException, NoSuchElementException, SecurityException, SystemException, UndeclaredThrowableException
常见的exception有:
1. java.lang.NullPointerException
异常的解释是”程序遇上了空指针”,简单地说就是调用了未经初始化的对象或者是不存在的对象,即把数组的初始化和数组元素的初始化混淆起来了。数组的初始化是对数组分配需要的空间,而初始化后的数组,其中的元素并没有实例化,依然是空的,所以还需要对每个元素都进行初始化(如果要调用的话)
2. java.lang.ClassNotFoundException异常的解释是”指定的类不存在”。
3. java.lang.ArithmeticException这个异常的解释是”数学运算异常”,比如程序中出现了除以零这样的运算就会出这样的异常。
4. java.lang.ArrayIndexOutOfBoundsException
异常的解释是”数组下标越界”,现在程序中大多都有对数组的操作,因此在调用数组的时候一定要认真检查,看自己调用的下标是不是超出了数组的范围,一般来说,显示(即直接用常数当下标)调用不太容易出这样的错,但隐式(即用变量表示下标)调用就经常出错了,还有一种情况,是程序中定义的数组的长度是通过某些特定方法决定的,不是事先声明的,这个时候,最好先查看一下数组的length,以免出现这个异常。
5. java.lang.IllegalArgumentException
这个异常的解释是”方法的参数错误”,比如g.setColor(int red,int green,int blue)这个方法中的三个值,如果有超过255的也会出现这个异常,因此一旦发现这个异常,我们要做的,就是赶紧去检查一下方法调用中的参数传递是不是出现了错误。
6. java.lang.IllegalAccessException
这个异常的解释是”没有访问权限”,当应用程序要调用一个类,但当前的方法即没有对该类的访问权限便会出现这个异常。对程序中用了Package的情况下要注意这个异常
java中错误(error)和异常(exception)有什么主要区别?
1.如图Exception 和 Error都继承自Throwable类,由jdk api文档中对该类的描述可以知道它是异常处理机制的基本组成类型。可以由虚拟机抛出或者编码者自行抛出(throw)
jdk8中文发翻译Throwable类的描述:Throwable类是Java语言中所有错误和异常的Throwable类。 只有作为此类(或其一个子类)的实例的对象由Java虚拟机抛出,或者可以由Java throw语句抛出。 类似地,只有这个类或其子类可以是catch子句中的参数类型。
2.Exception 和 Error 体现了 Java 平台设计者对不同异常情况的分类。Exception 是程序正常运行中,可以预料的意外情况,可能并且应该被捕获,进行相应处理。
3.Error 是指在正常情况下,不大可能出现的情况,绝大部分的 Error 都会导致程序(比如 JVM 自身)处于非正常的、不可恢复状态。既然是非正常情况,所以不便于也不需要捕获,常见的比如 OutOfMemoryError 之类,都是 Error 的子类。
4.Exception 又分为可检查(checked)异常和不检查(unchecked)异常,可检查异常在源代码里必须显式地进行捕获处理,这是编译期检查的一部分。前面我介绍的不可查的 Error,是 Throwable 不是 Exception。
如何处理这些异常?
在现实编程中我们一般使用 try-with-resources 和 multiple catch来进行一些异常处理(便利的特性),在编译时期,会自动生成相应的处理逻辑,比如,自动按照约定俗成 close 那些扩展了 AutoCloseable 或者 Closeable 的对象。
try-with-resources 是一种处理Closeable实现类关闭资源的一种写法,简单写了一个例子可以发现其实这就是一中语法,这种语法可以自动编译帮忙编译最后关闭流的操作:
public static void main(String[] args) {
try (BufferedReader br = new BufferedReader(new FileReader(“a”));
BufferedWriter writer = new BufferedWriter(new FileWriter(“a”))) {
// Try-with-resources
} catch (IOException e) {// Multiple catch
// Handle it
}
}
编译后class
public static void main(String[] args) { try {
BufferedReader br = new BufferedReader(new FileReader(“a”));
Throwable var2 = null; try {
BufferedWriter writer = new BufferedWriter(new FileWriter(“a”));
Object var4 = null; if (writer != null) { if (var4 != null) { try {
writer.close();
} catch (Throwable var15) {
((Throwable)var4).addSuppressed(var15);
}
} else {
writer.close();
}
}
} catch (Throwable var16) {
var2 = var16; throw var16;
} finally { if (br != null) { if (var2 != null) { try {
br.close();
} catch (Throwable var14) {
var2.addSuppressed(var14);
}
} else {
br.close();
}
}
}
} catch (IOException var18) {
;
}
}
异常处理的两个基本原则
尽量不要捕获类似 Exception 这样的通用异常,而是应该捕获特定异常
这是因为在日常的开发和合作中,我们读代码的机会往往超过写代码,软件工程是门协作的艺术,所以我们有义务让自己的代码能够直观地体现出尽量多的信息,而泛泛的 Exception 之类,恰恰隐藏了我们的目的。另外,我们也要保证程序不会捕获到我们不希望捕获的异常。比如,你可能更希望 RuntimeException 被扩散出来,而不是被捕获。
不要生吞(swallow)异常。这是异常处理中要特别注意的事情,因为很可能会导致非常难以诊断的诡异情况。
如果我们不把异常抛出来,或者也没有输出到日志(Logger)之类,程序可能在后续代码以不可控的方式结束。没人能够轻易判断究竟是哪里抛出了异常,以及是什么原因产生了异常。
在写程序时可以通过Objects类(jdk提供),或者断言等提前判断问题,如空指针异常的一些值的处理Objects. requireNonNull(filename);而不是使用之后有问题再系统抛出异常,这可能就会不直观的找到问题所在。即:Throw early, catch late 原则
希望对您有所帮助!~
Java如何获取Error信息,是error不是Exception
error属于编译时错误,根本不会编译通过,也就是不会生成.class文件,exception属于运行时错误,只有在调用的时候才会报错,比如空指针或数组下标越界等等。使用IDE编程,直接就显示error错误了,不用专门去获取。
为什么java运行时候出现这个error?
这个是Java运行环境和编译级别不兼容导致的
建议在cmd先通过”java -version” 指令查看Java运行环境版本, 之后再通过”javac -version” 指令查看Java的编译版本, 结果参考下图
如果版本不一致,说明电脑中存在多个Java环境, 建议修改环境变量,将多余的Java变量配置去掉, 一般是path变量
原创文章,作者:XPXK,如若转载,请注明出处:https://www.506064.com/n/134774.html