javaerror,javaerrorinidea

本文目录一览:

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

(0)
XPXKXPXK
上一篇 2024-10-04
下一篇 2024-10-04

相关推荐

发表回复

登录后才能评论