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/zh-hant/n/134774.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
XPXK的頭像XPXK
上一篇 2024-10-04 00:08
下一篇 2024-10-04 00:08

發表回復

登錄後才能評論