Java 异常类总结

澳门新葡亰娱乐官网 3

本文由码农网 –
小峰原创翻译,转发请看清文末的转发必要,接待出席我们的付费投稿陈设!

澳门新葡亰娱乐官网 1

Java至极定义:

接上文肆拾四个科学普及的 Java
错误及防止形式(第二有个别)

在上一篇随笔中,我们介绍了20种普及的编写翻译器错误,并就什么幸免那一个不当作了求证。今后,我们将器重转移(纵然不只是在意于某一块),来探究一下运作时充足以致形成那一个至极的源委。接下来大家将聊聊30种普及的要命和错误,并且告诉您怎样在代码中国化学工业进出口总公司解这几个难题。21.“ArrayIndexOutOfBoundsException”这是代码在尝试访谈不在数组的目录取值范围内的因素时会展现的运转时不当音讯。如下所示的代码会触发此非凡:

在Java语言中,将程序实践中生出的不健康景况称为“十分”,非凡是前后相继中的一些漏洞比比较多,但实际不是具备的错误都是非常,並且错误有时候是足以免止的

31.“Could Not Create Java Virtual Machine”

当大家品尝调用带有错误参数的Java代码时,日常会时有爆发此Java错误新闻(@ghacksnews):

Error: Could not create the Java Virtual Machine
Error: A fatal exception has occurred. Program will exit.

那日常是出于代码中的阐明存在混淆视听或为其分配适当的内存而引起的。

阅读有关哪些修复Java软件错误“Could Not Create Java Virtual
Machine”的座谈。(@StackOverflow)

String[] name = { "tom", "dick", "harry"};for (int i = 0; i = name.length; i++) { System.out.print(name[i] + 'n');}

Java十分的等级次序结构:

32.“class file contains wrong class”

当Java代码尝试在错误的目录中搜寻类公事时,就能并发“class file contains
wrong class”的标题,招致相像于以下内容的谬误音讯:

MyTest.java:10: cannot access MyStruct 
bad class file: D:JavatestMyStruct.java 
file does not contain class MyStruct 
Please remove or make sure it appears in the correct subdirectory of the classpath. 
MyStruct ms = new MyStruct();

要修复此错误,以下这几个提示能够提供帮衬:

  • 确定保证源文件的名号和类的称号相配——富含大小写。
  • 检查软件包语句是还是不是正确或是或不是贫乏。
  • 确认保证源文件位刘震云确的目录中。

翻阅此有关怎么修复“class file contains wrong
class”错误的座谈。(@StackOverflow)

平日来讲是其它二个例证 (@DukeU卡塔尔国:

澳门新葡亰娱乐官网 2

33.“ClassCastException”

“ClassCastException”音信提示了Java代码正在尝试将目的转变为错误的类。在来源Java
Concept of Day的这么些例子中,运维以下顺序:

package com;
class A
{
    int i = 10;
}
class B extends A
{
    int j = 20;
}
class C extends B
{
    int k = 30;
}
public class ClassCastExceptionDemo
{
    public static void main(String[] args)
    {
        A a = new B();   //B type is auto up casted to A type
        B b = (B) a;     //A type is explicitly down casted to B type.
        C c = (C) b;    //Here, you will get class cast exception
        System.out.println(c.k);
    }
}

招致以下错误:

Exception in thread “main” java.lang.ClassCastException: com.B cannot be cast to com.C
at com.ClassCastExceptionDemo.main(ClassCastExceptionDemo.java:23)

Java代码将开创三个类和子类的档期的顺序构造。为了制止“ClassCastException”错误,请确定保证新类型属刘頔确的类或其父类之一。假使利用泛型,则编写翻译代码时大概会捕获那几个错误。

阅读此教程以明白什么修复“ClassCastException”的Java软件错误。(@java_concept)

int[] list = new int[5];list[5] = 33; // illegal index, maximum index is 4

java.lang.Error

34.“ClassFormatError”

“ClassFormatError”信息提示链接错误,而且发生在类文件不可能被读取或说明为类公事的时候。

Caused by: java.lang.ClassFormatError: Absent Code attribute in method that is
        not native or abstract in class file javax/persistence/GenerationType
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)

有几多缘由会变成“ClassFormatError”错误:

  • 类公事以ASCII形式并非二进制情势上传。
  • Web服务器必需以二进制实际不是ASCII格式发送类公事。
  • 唯恐会有二个类路线错误,阻止了代码找到类公事。
  • 要是类被加载一回,那么第二回将引致抛出非常。
  • 正在利用旧版本的Java运营时。

翻阅此有关招致Java“ClassFormatError”错误的原因的探讨。(@StackOverflow)

数组的目录是从零伊始的,而且比数首席营业官度小了1。平时,在定义数组索引的范围时,要动用“”并不是“=”。能够看看那么些例子,索引是如何触发“ArrayIndexOutOfBoundsException”的。
(@StackOverflow卡塔尔22.“StringIndexOutOfBoundsException”现代码尝试访谈字符串中不在字符串范围内的字符串片段时,就能并发此主题材料。这种情状习以为常会生出在代码尝试创立三个字符串的子字符串,可是传入的参数值不合乎字符串长度限定的时候。如下正是那类难题的多个例证
(@javacodegeeks卡塔尔(قطر‎:

Direct Known Subclasses:

35.“ClassNotFoundException”

“ClassNotFoundException”仅在运转时发出——意味着在编写翻译时期有二个类在运作时缺点和失误了。那是一个链接错误。

澳门新葡亰娱乐官网 3

很像“NoClassDefFoundError”,在以下情状下会产出那个难点:

  • 该公文不在准确的目录中。
  • 类的称呼必需与公事的称谓一致(不包含文件扩展名)。 名称区分朗朗上口写。

阅读此有关招致“ClassNotFoundException”原因的更加的多案例的座谈。(@StackOverflow)。

public class StringCharAtExample { public static void main(String[] args) { String str = "Java Code Geeks!"; System.out.println("Length: " + str.length()); //The following statement throws an exception, because //the request index is invalid. char ch = str.charAt(50); }}

AnnotationFormatError, AssertionError, AWTError, CoderMalfunctionError,
FactoryConfigurationError, FactoryConfigurationError, IOError,
LinkageError, ServiceConfigurationError, ThreadDeath,
TransformerFactoryConfigurationError, VirtualMachineError等

36.“ExceptionInInitializerError”

此Java难点发生在静态先导化出错的时候(@GitHub)。
当Java代码稍后使用该类时,将发生“NoClassDefFoundError”错误。

java.lang.ExceptionInInitializerError
  at org.eclipse.mat.hprof.HprofIndexBuilder.fill(HprofIndexBuilder.java:54)
  at org.eclipse.mat.parser.internal.SnapshotFactory.parse(SnapshotFactory.java:193)
  at org.eclipse.mat.parser.internal.SnapshotFactory.openSnapshot(SnapshotFactory.java:106)
  at com.squareup.leakcanary.HeapAnalyzer.openSnapshot(HeapAnalyzer.java:134)
  at com.squareup.leakcanary.HeapAnalyzer.checkForLeak(HeapAnalyzer.java:87)
  at com.squareup.leakcanary.internal.HeapAnalyzerService.onHandleIntent(HeapAnalyzerService.java:56)
  at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
  at android.os.Handler.dispatchMessage(Handler.java:102)
  at android.os.Looper.loop(Looper.java:145)
  at android.os.HandlerThread.run(HandlerThread.java:61)
Caused by: java.lang.NullPointerException: in == null
  at java.util.Properties.load(Properties.java:246)
  at org.eclipse.mat.util.MessageUtil.(MessageUtil.java:28)
  at org.eclipse.mat.util.MessageUtil.(MessageUtil.java:13)
  ... 10 more

修补此错误我们要求越多的音讯。在代码中选择getCause(卡塔尔(قطر‎能够重回招致错误的极其。

翻阅此有关何以追踪ExceptionInInitializerError原因的商量。(@StackOverflow)

像数组的目录近似,字符串的目录是从零以前的。索引字符串时,最终多个字符的索引值比字符串的尺寸小1。
“StringIndexOutOfBoundsException”这一个混淆视听消息日常都代表索引正在品尝访谈子虚乌有于字符串中的字符。这里有叁个证实了“StringIndexOutOfBoundsException”是什么样爆发还会有啥去修补的事例。(@StackOverflow卡塔尔23.“NullPointerException”当程序尝试接纳未有经过赋值的指标引用时,就能发生“NullPointerException”。(@geeksforgeeks卡塔尔.

 

37.“IllegalBlockSizeException”

当长度音信不是8字节的翻番时,那么在解密时期就能够抛出“IllegalBlockSizeException”万分。以下是叁个源于ProgramCreek.com的示例(@ProgramCreek):

@Override
protected byte[] engineWrap(Key key) throws IllegalBlockSizeException, InvalidKeyException {
    try {
        byte[] encoded = key.getEncoded();
        return engineDoFinal(encoded, 0, encoded.length);
    } catch (BadPaddingException e) {
        IllegalBlockSizeException newE = new IllegalBlockSizeException();
        newE.initCause(e);
        throw newE;
    }
}

“IllegalBlockSizeException”恐怕是由以下原因引起的:

  • 运用不一样的加密和平解决密算法选项。
  • 要解密的音讯恐怕在传输中被截断或乱码。

开卷有关怎么样防卫IllegalBlockSizeException
Java软件错误消息的研讨。(@StackOverflow)

// A Java program to demonstrate that invoking a method// on null causes NullPointerExceptionimport java.io.*;class GFG{ public static void main (String[] args) { // Initializing String variable with null value String ptr = null; // Checking if ptr.equals null or works fine. try { // This line of code throws NullPointerException // because ptr is null if (ptr.equals("gfg")) System.out.print("Same"); else System.out.print("Not Same"); } catch(NullPointerException e) { System.out.print("NullPointerException Caught"); } }}

java.lang.RuntimeException

38.“BadPaddingException”

当使用填充来成立三个新闻并非8字节的倍数时,那么在解密时期恐怕会冒出“BadPaddingException”万分。那是来源于Stack
Overflow的一个例证(@StackOverflow):

javax.crypto.BadPaddingException: Given final block not properly padded
at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)
at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)
at com.sun.crypto.provider.AESCipher.engineDoFinal(DashoA13*..)
at javax.crypto.Cipher.doFinal(DashoA13*..)

加密数量是二进制的,所以不用尝试将其积存在字符串或在加密之间从未被正确填写的数码中。

读书有关什么样防卫BadPaddingException的研商。(@StackOverflow)

Java
程序常常现身如下处境:语句援用一个值为空的对象。尝试去拜谒已经定义不过还并未有分配过援引的类。这里就开采人士恐怕会在怎么样时候遇到“NullPointerException”以至怎么样管理它,实行了商讨。(@StackOverflowState of Qatar24.“NoClassDefFoundError”“NoClassDefFoundError”会生出在解释器找不到在主方法使用到了的类的文本的时候。如下是DZone的示例
(@DZone卡塔尔国:如若您对如下程序实施编写翻译:

Direct Known Subclasses:

39.“IncompatibleClassChangeError”

“IncompatibleClassChangeError”是LinkageError的一种样式,假如二个在基类在编写翻译子类之后发生变化,那么就能够现出此非常。上边这么些事例来自于How
to Do in
Java(@HowToDoInJava):

Exception in thread "main" java.lang.IncompatibleClassChangeError: Implementing class
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at net.sf.cglib.core.DebuggingClassWriter.toByteArray(DebuggingClassWriter.java:73)
at net.sf.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:26)
at net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:216)
at net.sf.cglib.core.KeyFactory$Generator.create(KeyFactory.java:144)
at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:116)
at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:108)
at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:104)
at net.sf.cglib.proxy.Enhancer.(Enhancer.java:69)

澳门新葡亰娱乐官网,并发“IncompatibleClassChangeError”有十分大恐怕的原故是:

  • 遗忘了主方法的静态。
  • 私行采取了legal类。
  • 类被改善了,而且存在通过旧的签订合同从另叁个类到那么些类的援用。尝试删除全体类公事并再次编写翻译全体剧情。

尝试解决“IncompatibleClassChangeError”的这一个步骤(@javacodegeeks)

class A{ // some code}public class B{ public static void main(String[] args) { A a = new A(); }}

ArithmeticException, ArrayStoreException, BufferOverflowException,
BufferUnderflowException,  ClassCastException, DataBindingException,
DOMException, EmptyStackException, EnumConstantNotPresentException,
EventException, FileSystemAlreadyExistsException,
FileSystemNotFoundException,
IllegalArgumentException,IllegalPathStateException,
IllegalStateException, IllformedLocaleException, ImagingOpException,
IncompleteAnnotationException, IndexOutOfBoundsException,
JMRuntimeException,  MissingResourceException,
NegativeArraySizeException, NoSuchElementException,NullPointerException,
ProfileDataException, ProviderException, ProviderNotFoundException, 
RejectedExecutionException, SecurityException, SystemException,
TypeConstraintException, TypeNotPresentException,
UndeclaredThrowableException, UnknownEntityException,
UnmodifiableSetException, UnsupportedOperationException,
WebServiceException, WrongMethodTypeException等

40.“FileNotFoundException”

当有着钦命路线名的公文不设有的时候,将抛出此Java软件错误新闻。

@Override public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException {
    if (uri.toString().startsWith(FILE_PROVIDER_PREFIX)) {
        int m = ParcelFileDescriptor.MODE_READ_ONLY;
        if (mode.equalsIgnoreCase("rw")) m = ParcelFileDescriptor.MODE_READ_WRITE;
        File f = new File(uri.getPath());
        ParcelFileDescriptor pfd = ParcelFileDescriptor.open(f, m);
        return pfd;
    } else {
        throw new FileNotFoundException("Unsupported uri: " + uri.toString());
    }
}

除此之外未有一些名路线名的文件之外,那可能代表现成文件不可能访谈。

翻阅有关干什么会抛出“FileNotFoundException”的座谈。(@StackOverflow)

它会转移七个 .class 文件:A.class 和 B.class。删除 A.class 文件同期运转B.class 文件,就能够得到 NoClassDefFoundError 错误新闻:

 

41.“EOFException”

当输入时期意外终止文件或流时,将抛出“EOFException”。
以下是抛出EOFException卓殊的叁个示范,来自JavaBeat应用程序:

import java.io.DataInputStream;
import java.io.EOFException;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
public class ExceptionExample {
    public void testMethod1() {
        File file = new File("test.txt");
        DataInputStream dataInputStream = null;
        try {
            dataInputStream = new DataInputStream(new FileInputStream(file));
            while (true) {
                dataInputStream.readInt();
            }
        } catch (EOFException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (dataInputStream != null) {
                    dataInputStream.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    public static void main(String[] args) {
        ExceptionExample instance1 = new ExceptionExample();
        instance1.testMethod1();
    }
}

运营方面包车型大巴前后相继,将抛出以下万分:

java.io.EOFException
at java.io.DataInputStream.readInt(DataInputStream.java:392)
at logging.simple.ExceptionExample.testMethod1(ExceptionExample.java:16)
at logging.simple.ExceptionExample.main(ExceptionExample.java:36)

当DataInputStream类尝试在流中读取数据但从不越来越多多少时,将抛出“EOFException”。它也能够生出在ObjectInputStream和RandomAccessFile类中。

阅读有关运作Java软件时恐怕发生“EOFException”的研究。(@StackOverflow)

Exception in thread "main" java.lang.NoClassDefFoundError: Aat MainClass.main(MainClass.java:10)Caused by: java.lang.ClassNotFoundException: Aat java.net.URLClassLoader.findClass(URLClassLoader.java:381)at java.lang.ClassLoader.loadClass(ClassLoader.java:424)at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

从大要上来分极度为两块:

42.“UnsupportedEncodingException”

当不援助字符编码时,会抛出此Java软件错误消息(@Penn)。

public UnsupportedEncodingException()

正在使用的Java设想机可能不帮忙加以的字符集。

翻阅有关何以在运行Java软件时管理“UnsupportedEncodingException”格外的商议。(@StackOverflow)

倘若存在如下难点,就能发生那样的主题材料:该公文不在准确的目录。类的名目必得与公事的名号雷同,且名称是分别朗朗上口写的。你能够读一读这里关于为啥会在运行Java
软件时发出“NoClassDefFoundError”的座谈。(@StackOverflow卡塔尔(قطر‎25.“NoSuchMethodFoundError”
Java
软件尝试调用类的不二等秘书技而该措施在类里面未有概念时,就能现出那样的失实信息(@myUNDState of Qatar:

  1. error—错误 :
    是指程序不恐怕管理的大错特错,表示应用程序运营时现身的机要失实。举个例子jvm运营时现身的OutOfMemoryError以致Socket编制程序时现身的端口占用等次第不能够管理的荒诞。

  2. Exception — 卓殊 :万分可分为运营时极度跟编写翻译相当

  3. 检查性万分: 不处理编译不能够通过

  4. 非检查性非常:不管理编写翻译能够通过,假如有抛出直接抛到调控台

  5. 运作时那些: 正是非检查性非凡

  6. 非运转时非常: 正是检查性非常

43.“SocketException”

“SocketException”非常表示创建或访谈套接字时出错(@ProgramCreek)。

public void init(String contextName, ContextFactory factory) {
    super.init(contextName, factory);
    String periodStr = getAttribute(PERIOD_PROPERTY);
    if (periodStr != null) {
        int period = 0;
        try {
            period = Integer.parseInt(periodStr);
        } catch (NumberFormatException nfe) {}
        if (period <= 0) {
            throw new MetricsException("Invalid period: " + periodStr);
        }
        setPeriod(period);
    }
    metricsServers =
        Util.parse(getAttribute(SERVERS_PROPERTY), DEFAULT_PORT);
    unitsTable = getAttributeTable(UNITS_PROPERTY);
    slopeTable = getAttributeTable(SLOPE_PROPERTY);
    tmaxTable = getAttributeTable(TMAX_PROPERTY);
    dmaxTable = getAttributeTable(DMAX_PROPERTY);
    try {
        datagramSocket = new DatagramSocket();
    } catch (SocketException se) {
        se.printStackTrace();
    }
}

当由于以下原由此达到最艾哈迈达巴德接时,常常会抛出此非常:

  • 从没越来越多的网络端口可用以应用程序。
  • 系统尚未充裕的内部存款和储蓄器来扶植新的一连。

阅读有关哪些在运营Java软件时解决“SocketException”难题的座谈。(@StackOverflow)

Error: Could not find or load main class wiki.java

特别和谬误的界别:万分能被先后本人能够拍卖,错误是力不能够支处理。

44.“SSLException”

此Java软件错误新闻发生在与SSL相关的操作出现故障的时候。
以下示例来自Atlassian(@Atlassian):

com.sun.jersey.api.client.ClientHandlerException: javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
   at com.sun.jersey.client.apache.ApacheHttpClientHandler.handle(ApacheHttpClientHandler.java:202)
   at com.sun.jersey.api.client.Client.handle(Client.java:365)
   at com.sun.jersey.api.client.WebResource.handle(WebResource.java:556)
   at com.sun.jersey.api.client.WebResource.get(WebResource.java:178)
   at com.atlassian.plugins.client.service.product.ProductServiceClientImpl.getProductVersionsAfterVersion(ProductServiceClientImpl.java:82)
   at com.atlassian.upm.pac.PacClientImpl.getProductUpgrades(PacClientImpl.java:111)
   at com.atlassian.upm.rest.resources.ProductUpgradesResource.get(ProductUpgradesResource.java:39)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
   at java.lang.reflect.Method.invoke(Unknown Source)
   at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper$ResponseOutInvoker$1.invoke(DispatchProviderHelper.java:206)
   at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper$1.intercept(DispatchProviderHelper.java:90)
   at com.atlassian.plugins.rest.common.interceptor.impl.DefaultMethodInvocation.invoke(DefaultMethodInvocation.java:61)
   at com.atlassian.plugins.rest.common.expand.interceptor.ExpandInterceptor.intercept(ExpandInterceptor.java:38)
   at com.atlassian.plugins.rest.common.interceptor.impl.DefaultMethodInvocation.invoke(DefaultMethodInvocation.java:61)
   at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper.invokeMethodWithInterceptors(DispatchProviderHelper.java:98)
   at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper.access$100(DispatchProviderHelper.java:28)
   at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper$ResponseOutInvoker._dispatch(DispatchProviderHelper.java:202)
   ...
Caused by: javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
   ...
Caused by: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
   ...
Caused by: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty

发出这种情景的原故有:

  • 服务器或客商端上的证件已过期。
  • 服务器端口已重新设置为另贰个端口。

翻阅有关唯恐形成Java软件“SSLException”错误的商酌。(@StackOverflow)

当证明中有错别字的时候,平时就能够情不自禁“NoSuchMethodFoundError”那样的大错特错。阅读这里的教程能够通晓怎么防止NoSuchMethodFoundError 错误。 (@javacodegeeks卡塔尔(قطر‎26.
“NoSuchProviderException”
当呼吁了三个不可用的新余方案提供方的时候,就能抓住“NoSuchProviderException”
(@alvinalexander卡塔尔(قطر‎:

 

45.“MissingResourceException”

当能源错过时,会爆发“MissingResourceException”非常。假若能源在不利的类路线中,那么日常是因为属性文件未有正确配置。下边有二个例子(@TIBCO):

java.util.MissingResourceException: Can't find bundle for base name localemsgs_en_US, locale en_US
java.util.ResourceBundle.throwMissingResourceException
java.util.ResourceBundle.getBundleImpl
java.util.ResourceBundle.getBundle
net.sf.jasperreports.engine.util.JRResourcesUtil.loadResourceBundle
net.sf.jasperreports.engine.util.JRResourcesUtil.loadResourceBundle

翻阅有关哪些在运行Java软件时修复“MissingResourceException”的探究。

javax.mail.NoSuchProviderException

广泛至极总括:

46.“NoInitialContextException”

当Java应用程序想要试行命名操作但不恐怕成立连接时,会产生“NoInitialContextException”卓殊(@TheASF)。

[java] Caused by: javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial
[java]     at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645)
[java]     at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:247)
[java]     at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:284)
[java]     at javax.naming.InitialContext.lookup(InitialContext.java:351)
[java]     at org.apache.camel.impl.JndiRegistry.lookup(JndiRegistry.java:51)

那化解起来大概会是四个繁缛的主题素材,但此间有局地或然招致“NoInitialContextException”Java错误消息的缘由:

  • 应用程序恐怕没有准确的凭据实行一而再。
  • 代码可能不可能识别所需的JNDI达成。
  • InitialContext类大概没有配置不错的特性。

翻阅有关运行Java软件时“NoInitialContextException”意味什么的探讨。(@StackOverflow)

要是您在品尝寻觅“NoSuchProviderException”为何会生出的原由,请进行如下检查:JRE
配置。配置中的 Java 主目录配置。使用的哪个 Java
环境。安全方案提供方选项。你能够读一下那边境海关于以致“NoSuchProviderException”的由来的座谈。(@StackOverflow卡塔尔国27.
AccessControlException
AccessControlException
表示央求访谈的系统能源被驳倒了,比方本例中的 JBossDeveloper
(@jbossdeveloperState of Qatar:

非检查性相当(RuntimeException):

47.“NoSuchElementException”

当迭代(比方“for”循环)尝试访谈下贰个成分而并未有成分的时候,就可以现身“NoSuchElementException”万分。

public class NoSuchElementExceptionDemo{
    public static void main(String args[]) {
        Hashtable sampleMap = new Hashtable();
        Enumeration enumeration = sampleMap.elements();
        enumeration.nextElement();  //java.util.NoSuchElementExcepiton here because enumeration is empty
    }
}
Output:
Exception in thread "main" java.util.NoSuchElementException: Hashtable Enumerator
        at java.util.Hashtable$EmptyEnumerator.nextElement(Hashtable.java:1084)
        at test.ExceptionTest.main(NoSuchElementExceptionDemo.java:23)

抛出“NoSuchElementException”恐怕的门道:

  • Enumeration:: nextElement()
  • NamingEnumeration::next()
  • StringTokenizer:: nextElement()
  • Iterator::next()

开卷此有关怎么在Java软件中期维修复“NoSuchElementException”的科目。(@javinpaul)

ERROR Could not register mbeans java.security.AccessControlException: WFSM000001: Permission check failed (permission "("javax.management.MBeanPermission" "org.apache.logging.log4j.core.jmx.LoggerContextAdmin#-[org.apache.logging.log4j2:type=51634f]" "registerMBean")" in code source "(vfs:/C:/wildfly-10.0.0.Final/standalone/deployments/mySampleSecurityApp.war/WEB-INF/lib/log4j-core-2.5.jar )" of "null")

java.lang.阿RitterhmeticException,数学生运动算至极,当现身万分的演算条件时,抛出此十一分

48.“NoSuchFieldError”

当应用程序尝试访谈对象中的二个字段,但钦赐的字段不再存在于对象中时,将抛出此Java软件错误新闻(@sourceforge)。

public NoSuchFieldError()

平凡,该错误在编写翻译器中被抓走,但是一旦在编写翻译和运维时期转移了类定义,则在运转时将被捕获。

阅读此有关哪些在运作Java软件时意识怎么导致“NoSuchFieldError”的切磋。(@StackOverflow)

可以读一读这里那篇有关解决“AccessControlException”错误的研讨。
(@github卡塔尔28. “ArrayStoreException”“ArrayStoreException”会时有发生在向
Java 的数组中改动来分受到转变准绳节制而产生搁浅的时候。举个例子,那一个来自于
JavaScan.com 的这一个事例就表现了产生这种难题的程序 (@java_scan):

java.lang.ArrayStoreException,数组存款和储蓄格外

49.“NumberFormatException”

当应用程序尝试将字符串调换为数字类型,但该数字不是立竿见影的数字字符串时,会冒出此Java软件错误新闻(@alvinalexander)。

package com.devdaily.javasamples;
public class ConvertStringToNumber {
    public static void main(String[] args) {
        try {
            String s = "FOOBAR";
            int i = Integer.parseInt(s);
            // this line of code will never be reached
            System.out.println("int value = " + i);
        }
        catch (NumberFormatException nfe) {
            nfe.printStackTrace();
        }
    }
}

唯恐抛出“NumberFormatException”的来头有:

  • 数字中的前导或尾随空格。
  • 表明不在数字前边。
  • 数字有逗号。
  • 本地化恐怕不会将其分类为有效数字。
  • 数字太大,不合乎数字类型。

开卷有关如何在运作Java软件时制止“NumberFormatException”的商量。(@StackOverflow)。

 /* ............... START ............... */ public class JavaArrayStoreException { public static void main(String...args) { Object[] val = new Integer[4]; val[0] = 5.8; } } /* ............... END ............... */

java.lang.IllegalArgumentException,方法的参数错误

50.“TimeoutException”

当堵塞操作超时时,会现身此Java软件错误音讯。

private void queueObject(ComplexDataObject obj) throws TimeoutException, InterruptedException {
    if (!queue.offer(obj, 10, TimeUnit.SECONDS)) {
        TimeoutException ex = new TimeoutException("Timed out waiting for parsed elements to be processed. Aborting.");
        throw ex;
    }
}

读书此有关什么在运行Java软件时管理“提姆eoutException”的座谈。(@StackOverflow)。

输出结果如下:

java.lang.ClassCastException,类型转变非常,当试图将对象强迫调换为不是实例的子类时,抛出该极度

结论

到此处就满门了事了!
借使您细细阅读了整篇随笔,那么相信未来您应该能管理各个运转时和编写翻译器的大错特错和非常了。编程欢悦!

日前两篇链接:

肆拾贰个大范围的 Java
错误及防止形式(第一部分)

肆17个何奇之有的 Java
错误及防止方式(第二片段)

Exception in thread "main" java.lang.ArrayStoreException: java.lang.Doubleat ExceptionHandling.JavaArrayStoreException.main(JavaArrayStoreException.java:7)

java.lang.IndexOutOfBoundsException,数组下标越界非凡,具体分:java.lang.ArrayIndexOutOfBoundsException、java.lang.StringIndexOutOfBoundsException

数组在被发轫化的时候,要求注明允许进入数组的对象的花色。由此数组的各样成分都得是一模二样类别的靶子。能够读一读这里关于如何消灭“ArrayStoreException”难点的研究(@StackOverflow卡塔尔29. “Bad Magic
Number”
以此似是而非音讯的乐趣是网络上的类定义文件也许出难题了。如下是服务器端的失实音讯示例(@TSS_dotcom):

java.lang.NullPointerException,空指针至极,调用了未经起首化的靶子或许是不设有的对象

Java(TM) Plug-in: Version 1.3.1_01Using JRE version 1.3.1_01 Java HotSpot(TM) Client VMUser home directory = C:Documents and SettingsAnkurProxy Configuration: Manual ConfigurationProxy: 192.168.11.6:80java.lang.ClassFormatError: SalesCalculatorAppletBeanInfo (Bad magic number)at java.lang.ClassLoader.defineClass0(Native Method)at java.lang.ClassLoader.defineClass(Unknown Source)at java.security.SecureClassLoader.defineClass(Unknown Source)at sun.applet.AppletClassLoader.findClass(Unknown Source)at sun.plugin.security.PluginClassLoader.access$201(Unknown Source)at sun.plugin.security.PluginClassLoader$1.run(Unknown Source)at java.security.AccessController.doPrivileged(Native Method)at sun.plugin.security.PluginClassLoader.findClass(Unknown Source)at java.lang.ClassLoader.loadClass(Unknown Source)at sun.applet.AppletClassLoader.loadClass(Unknown Source)at java.lang.ClassLoader.loadClass(Unknown Source)at java.beans.Introspector.instantiate(Unknown Source)at java.beans.Introspector.findInformant(Unknown Source)at java.beans.Introspector.(Unknown Source)at java.beans.Introspector.getBeanInfo(Unknown Source)at sun.beans.ole.OleBeanInfo.(Unknown Source)at sun.beans.ole.StubInformation.getStub(Unknown Source)at sun.plugin.ocx.TypeLibManager$1.run(Unknown Source)at java.security.AccessController.doPrivileged(Native Method)at sun.plugin.ocx.TypeLibManager.getTypeLib(Unknown Source)at sun.plugin.ocx.TypeLibManager.getTypeLib(Unknown Source)at sun.plugin.ocx.ActiveXAppletViewer.statusNotification(Native Method)at sun.plugin.ocx.ActiveXAppletViewer.notifyStatus(Unknown Source)at sun.plugin.ocx.ActiveXAppletViewer.showAppletStatus(Unknown Source)at sun.applet.AppletPanel.run(Unknown Source)at java.lang.Thread.run(Unknown Source)

java.lang.NumberFormatException,字符串调换为数字特别

“bad magic
number”错误消息发出时,恐怕存在如下那几个意况:类公事的前三个字节不是十二进制数字
CAFEBABE。类公事是以 ASCII 情势并不是二进制方式上传的。Java
程序是在编写翻译早先运维的。能够读一读这里关于怎么着找到“bad magic
number”的发生原因的座谈。 (@coderanch卡塔尔国30. “Broken Pipe”
那样的怪诞新闻表示来自于文件或网络套接字的数据流已偃旗息鼓职业或在另一端已经处在关闭状态
(@ExpertsExchangeState of Qatar。

 

Exception in thread "main" java.net.SocketException: Broken pipe at java.net.SocketOutputStream.socketWrite0(Native Method) at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92) at java.net.SocketOutputStream.write(SocketOutputStream.java:115) at java.io.DataOutputStream.write

检查性极度类:

多少管道中断产生的来由常常富含如下那些磁盘的暂存空间已经耗尽。RAM恐怕被窒碍了。数据流大概早就损坏了。读取管道的进度也许早就关闭了。能够读一读这里那篇关于怎么着是“broken
pipe”错误的商量。 (@StackOverflow卡塔尔31. “Could Not Create Java Virtual
Machine”
当 Java 代码尝试选用不当的参数来运维 Java
时,日常会生出如此的大错特错音讯 (@ghacksnewsState of Qatar:

java.io.IOException,IO流异常

Error: Could not create the Java Virtual MachineError: A fatal exception has occurred. Program will exit.

java.lang.ClassNotFoundException,类未找到极度

它平时是出于代码中的注脚中依旧为其分配适当的内部存款和储蓄器时有荒谬而孳生的。能够读一读这里关于怎么样修复“Could
not create Java Virtual Machine”错误的研商。(@StackOverflow卡塔尔国32. “class
file contains wrong class”
“class file contains wrong
class”难点常常会时有发生在 Java
代码尝试在错误的目录中搜寻类公事的时候,爆发相同于如下所示的不当音信:

java.lang.IllegalAccessException,未有访问权限,谢绝访谈三个类的时候,抛出该极其

MyTest.java:10: cannot access MyStructbad class file: D:JavatestMyStruct.javafile does not contain class MyStructPlease remove or make sure it appears in the correct subdirectory of the classpath.MyStruct ms = new MyStruct();^

java.lang.NoSuchMethodException,方法不设有相当

要修复此难点,如下提醒能够提供一些接济:确定保障源文件的称呼和类的称呼相称——包含大小写。检查包的认证语句是不是精确大概紧缺。确定保障源文件位方岚确的目录。能够读一读这里关于咋样修复“类公事满含错误类”错误的争辨。
(@StackOverflowState of Qatar33. “ClassCastException”“ClassCastException”
消息表示 Java 代码正尝试将目的转变来贰个乖谬的花色。在下边这一个源于于
Java 概念日有所进的实例中, 运转着那样的次序:

java.lang.NoSuchFiledException,属性不设有特别

package com;class A{ int i = 10;}class B extends A{ int j = 20;}class C extends B{ int k = 30;}public class ClassCastExceptionDemo{ public static void main(String[] args) { A a = new B(); //B type is auto up casted to A type B b = (B) a; //A type is explicitly down casted to B type. C c = (C) b; //Here, you will get class cast exception System.out.println(c.k); }}

java.lang.EOFException,文件已终止十分,当程序在输入的进度中遇到文件或流的最后时,引发那几个

那会形成如下错误:

 

Exception in thread “main” java.lang.ClassCastException: com.B cannot be cast to com.Cat com.ClassCastExceptionDemo.main(ClassCastExceptionDemo.java:23)

Java 代码会创设三个类和子类的层级布局。为了制止 “ClassCastException”
错误,请保管新的连串归于王海鸰确的类依然它的父类。假使应用了泛型的话,这几个错误就能够在编写翻译时被捕获到。能够读一读这篇有关怎么样修复
“ClassCastException” 错误的课程。 (@java_concept)34.
“ClassFormatError”
“ClassFormatError”
新闻指代的是二个链接错误,暴发在三个类公事不可能被读取大概解释为三个类公事的时候。

Caused by: java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file javax/persistence/GenerationTypeat java.lang.ClassLoader.defineClass1(Native Method)at java.lang.ClassLoader.defineClassCond(Unknown Source)at java.lang.ClassLoader.defineClass(Unknown Source)at java.security.SecureClassLoader.defineClass(Unknown Source)at java.net.URLClassLoader.defineClass(Unknown Source)at java.net.URLClassLoader.access$000(Unknown Source)at java.net.URLClassLoader$1.run(Unknown Source)at java.security.AccessController.doPrivileged(Native Method)at java.net.URLClassLoader.findClass(Unknown Source)at java.lang.ClassLoader.loadClass(Unknown Source)at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)at java.lang.ClassLoader.loadClass(Unknown Source)

至于“ClassFormatError”错误为何会爆发,有三种大概:类公事是以 ASCII
形式并不是二进制方式来上传的。网页服务器是以二进制而非 ASCII
来发送类公事的。恐怕有类路径错误阻止了代码找到类公事。倘使类被加载了一回,第二遍就能够导致那一个特别被抛出来。使用了三个老版本的
Java 运转时。能够读一读这里关于什么会引发“ClassFormatError”的座谈。
(@StackOverflowState of Qatar35. “ClassNotFoundException”“ClassNotFoundException”
只会发生于运作时——意味着本存在于编写翻译时可是在运作时却风行一时了。这是叁个链接错误。特别周围于
“NoClassDefFoundError”,如下情状就有望让这么的难题产生:文件不在精确的目录。类的称号必得跟文件的称呼保持一致。名称对大小写是敏感的。能够读一读这里关于怎样会变成“ClassNotFoundException“发生的商议,以询问越来越多情况(@StackOverflow卡塔尔.36. “ExceptionInInitializerError”以此 Java
难点会在静态最早化相当时发生 (@GitHubState of Qatar。当 Java
代码稍后要用到那些类时, 将会生出“NoClassDefFoundError” 错误.

java.lang.ExceptionInInitializerError at org.eclipse.mat.hprof.HprofIndexBuilder.fill(HprofIndexBuilder.java:54) at org.eclipse.mat.parser.internal.SnapshotFactory.parse(SnapshotFactory.java:193) at org.eclipse.mat.parser.internal.SnapshotFactory.openSnapshot(SnapshotFactory.java:106) at com.squareup.leakcanary.HeapAnalyzer.openSnapshot(HeapAnalyzer.java:134) at com.squareup.leakcanary.HeapAnalyzer.checkForLeak(HeapAnalyzer.java:87) at com.squareup.leakcanary.internal.HeapAnalyzerService.onHandleIntent(HeapAnalyzerService.java:56) at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:145) at android.os.HandlerThread.run(HandlerThread.java:61)Caused by: java.lang.NullPointerException: in == null at java.util.Properties.load(Properties.java:246) at org.eclipse.mat.util.MessageUtil.(MessageUtil.java:28) at org.eclipse.mat.util.MessageUtil.(MessageUtil.java:13) ... 10 more

要修复此难题还亟需越多的消息。在代码中动用 getCause(卡塔尔(قطر‎可以回到招致被重临的失实发生的老大对象。能够读一读这里关于怎么样跟踪ExceptionInInitializerError 的发出原因的评论。 (@StackOverflow卡塔尔37.
“IllegalBlockSizeException”
“IllegalBlockSizeException”
会产生在解密时消息长度不是8位的翻番的时候。这里有叁个起点于
ProgramCreek.com 的事例(@ProgramCreek卡塔尔:

@Overrideprotected byte[] engineWrap(Key key) throws IllegalBlockSizeException, InvalidKeyException { try { byte[] encoded = key.getEncoded(); return engineDoFinal(encoded, 0, encoded.length); } catch (BadPaddingException e) { IllegalBlockSizeException newE = new IllegalBlockSizeException(); newE.initCause(e); throw newE; }}

“IllegalBlockSizeException”
大概由如下情况所产生:使用的加解密算法不平等。被解密的新闻在传递过来的旅途被截断可能发生了乱码。可以读一读这里关于如何幸免IllegalBlockSizeException 错误发生的评论(@StackOverflow卡塔尔38.
“BadPaddingException”
“BadPaddingException”会发出于解密时填充块被用来创设贰个方可用
8 位的翻番来总括长度的音信的时候。这里有三个出自于 Stack Overflow
的例证(@StackOverflowState of Qatar:

javax.crypto.BadPaddingException: Given final block not properly paddedat com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)at com.sun.crypto.provider.AESCipher.engineDoFinal(DashoA13*..)at javax.crypto.Cipher.doFinal(DashoA13*..)

被加密的数额是二进制的,由此不用尝试着在叁个字符串中去存款和储蓄它,只怕也是有希望是加密时期数据未有进展适度的填充。能够读一读这里关于怎么样防备BadPaddingException 发生的座谈。 (@StackOverflow卡塔尔39.
“IncompatibleClassChangeError”
“IncompatibleClassChangeError”
是链接错误 LinkageError
的一种样式,会在二个基类在其子类已经编写翻译过了以往爆发了定义时爆发。这里有一个源于于
How to Do in Java 的例证 (@HowToDoInJavaState of Qatar:

Exception in thread "main" java.lang.IncompatibleClassChangeError: Implementing classat java.lang.ClassLoader.defineClass1(Native Method)at java.lang.ClassLoader.defineClass(Unknown Source)at java.security.SecureClassLoader.defineClass(Unknown Source)at java.net.URLClassLoader.defineClass(Unknown Source)at java.net.URLClassLoader.access$000(Unknown Source)at java.net.URLClassLoader$1.run(Unknown Source)at java.security.AccessController.doPrivileged(Native Method)at java.net.URLClassLoader.findClass(Unknown Source)at java.lang.ClassLoader.loadClass(Unknown Source)at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)at java.lang.ClassLoader.loadClass(Unknown Source)at java.lang.ClassLoader.loadClassInternal(Unknown Source)at net.sf.cglib.core.DebuggingClassWriter.toByteArray(DebuggingClassWriter.java:73)at net.sf.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:26)at net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:216)at net.sf.cglib.core.KeyFactory$Generator.create(KeyFactory.java:144)at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:116)at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:108)at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:104)at net.sf.cglib.proxy.Enhancer.(Enhancer.java:69)

当 “IncompatibleClassChangeError”
产生时,有能发出了如下情况:忘记了在主方法的 static
关键词。二个法定的类被地下地运用。八个类发生了校正,可是还会有别的类应用原本的签订左券来援引它。能够尝试把装有的类公事都剔除掉然后一切再一次编写翻译。可尝试这一个步骤来化解“IncompatibleClassChangeError”难题(@javacodegeeksState of Qatar40. “FileNotFoundException”其一 Java
软件错误新闻会在内定路径名上的公文不设有是被抛出来。

@Override public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException { if (uri.toString().startsWith(FILE_PROVIDER_PREFIX)) { int m = ParcelFileDescriptor.MODE_READ_ONLY; if (mode.equalsIgnoreCase("rw")) m = ParcelFileDescriptor.MODE_READ_WRITE; File f = new File(uri.getPath()); ParcelFileDescriptor pfd = ParcelFileDescriptor.open(f, m); return pfd; } else { throw new FileNotFoundException("Unsupported uri: " + uri.toString()); }}

出去钦点路径名上的文件空头支票之外,这种主题材料也可能有超级大可能率意思是存在的文书是不足被访谈的。能够读一读这里关于为什么“FileNotFoundException”会被抛出的研究。(@StackOverflow卡塔尔(قطر‎41.
“EOFException”
“EOFException”会在输出时不留心达到了文本的终点大概流的终点时被抛出。这里有三个源于于
JavaBeat 的抛出了二个 EOFException 的应用程序示例:

import java.io.DataInputStream;import java.io.EOFException;import java.io.File;import java.io.FileInputStream;import java.io.IOException;public class ExceptionExample { public void testMethod1() { File file = new File("test.txt"); DataInputStream dataInputStream = null; try { dataInputStream = new DataInputStream(new FileInputStream(file)); while (true) { dataInputStream.readInt(); } } catch (EOFException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { if (dataInputStream != null) { dataInputStream.close(); } } catch (IOException e) { e.printStackTrace(); } } } public static void main(String[] args) { ExceptionExample instance1 = new ExceptionExample(); instance1.testMethod1(); }}

运作上述顺序会促成如下万分:

java.io.EOFExceptionat java.io.DataInputStream.readInt(DataInputStream.java:392)at logging.simple.ExceptionExample.testMethod1(ExceptionExample.java:16)at logging.simple.ExceptionExample.main(ExceptionExample.java:36)

当背后已经远非多少可供出口了,可 DataInputStream
仍在尝试读取流中的数据, “EOFException” 就能够被抛出来。它也得以发生于
ObjectInputStream 和 RandomAccessFile
类的逻辑之中。能够读一读这里关于在运作 Java
软件时“EOFException”曾几何时会发出的商量。(@StackOverflow卡塔尔(قطر‎42.
“UnsupportedEncodingException”
该 Java
软件错误新闻会在字符编码不被碰到所帮忙的时候发生 (@Penn卡塔尔(قطر‎。

public UnsupportedEncodingException()

所接纳的 Java
设想机不补助某一种给定的字符集是有望的。可以读一读这里关于如何在运行Java 软件时管理“UnsupportedEncodingException”的研究(@StackOverflowState of Qatar43. “SocketException”“SocketException”
在开立或然访谈套接字的时候有错误发生(@ProgramCreek卡塔尔.

public void init(String contextName, ContextFactory factory) { super.init(contextName, factory); String periodStr = getAttribute(PERIOD_PROPERTY); if (periodStr != null) { int period = 0; try { period = Integer.parseInt(periodStr); } catch (NumberFormatException nfe) {} if (period = 0) { throw new MetricsException("Invalid period: " + periodStr); } setPeriod(period); } metricsServers = Util.parse(getAttribute(SERVERS_PROPERTY), DEFAULT_PORT); unitsTable = getAttributeTable(UNITS_PROPERTY); slopeTable = getAttributeTable(SLOPE_PROPERTY); tmaxTable = getAttributeTable(TMAX_PROPERTY); dmaxTable = getAttributeTable(DMAX_PROPERTY); try { datagramSocket = new DatagramSocket(); } catch (SocketException se) { se.printStackTrace(); }}

该特别平日会在最阿比让接数因为正如原因此满了的时候被抛出来:已经未有越来越多的互联网端口能够供应该应用程序了。系统还没足够的内部存款和储蓄器来扶助新的接连。能够读一读这里关于在运营Java 软件时如何消除“SocketException”难题的商讨。(@StackOverflow卡塔尔(قطر‎44.
“SSLException”
该 Java 软件错误消息会在有跟 SSL
相关的操作失败时发生。如下是多少个出自于 Atlassian 的演示(@Atlassian卡塔尔:

com.sun.jersey.api.client.ClientHandlerException: javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty at com.sun.jersey.client.apache.ApacheHttpClientHandler.handle(ApacheHttpClientHandler.java:202) at com.sun.jersey.api.client.Client.handle(Client.java:365) at com.sun.jersey.api.client.WebResource.handle(WebResource.java:556) at com.sun.jersey.api.client.WebResource.get(WebResource.java:178) at com.atlassian.plugins.client.service.product.ProductServiceClientImpl.getProductVersionsAfterVersion(ProductServiceClientImpl.java:82) at com.atlassian.upm.pac.PacClientImpl.getProductUpgrades(PacClientImpl.java:111) at com.atlassian.upm.rest.resources.ProductUpgradesResource.get(ProductUpgradesResource.java:39) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper$ResponseOutInvoker$1.invoke(DispatchProviderHelper.java:206) at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper$1.intercept(DispatchProviderHelper.java:90) at com.atlassian.plugins.rest.common.interceptor.impl.DefaultMethodInvocation.invoke(DefaultMethodInvocation.java:61) at com.atlassian.plugins.rest.common.expand.interceptor.ExpandInterceptor.intercept(ExpandInterceptor.java:38) at com.atlassian.plugins.rest.common.interceptor.impl.DefaultMethodInvocation.invoke(DefaultMethodInvocation.java:61) at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper.invokeMethodWithInterceptors(DispatchProviderHelper.java:98) at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper.access$100(DispatchProviderHelper.java:28) at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper$ResponseOutInvoker._dispatch(DispatchProviderHelper.java:202) ...Caused by: javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty ...Caused by: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty ...Caused by: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty

日常来说景况有相当的大恐怕会引致那样的难点发生:服务器或然顾客端上的证书已经过期了。服务器上的端口已经被重设成别的的三个。能够读一读这里关于在
Java 软件中怎么着会导致“SSLException”
错误爆发的商酌。(@StackOverflow卡塔尔(قطر‎45.
“MissingResourceException”
“MissingResourceException”
会在某个资源遗失时产生。如若能源已经处李樯确的类路线之下的话,这就通常是因为一个属性配置文件并未被稳当的开展了配置。这里有多少个示例
(@TIBCO卡塔尔国:

java.util.MissingResourceException: Can't find bundle for base name localemsgs_en_US, locale en_USjava.util.ResourceBundle.throwMissingResourceExceptionjava.util.ResourceBundle.getBundleImpljava.util.ResourceBundle.getBundlenet.sf.jasperreports.engine.util.JRResourcesUtil.loadResourceBundlenet.sf.jasperreports.engine.util.JRResourcesUtil.loadResourceBundle

能够读一读这里关于在运维 Java
软件时怎么着修复“MissingResourceException”难点的探究。46.
“NoInitialContextException”
“NoInitialContextException”会在 Java
应用程序想要试行命名操作可是不可能成立叁个链接的时候发出(@TheASF卡塔尔(قطر‎.

[java] Caused by: javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial[java] at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645)[java] at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:247)[java] at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:284)[java] at javax.naming.InitialContext.lookup(InitialContext.java:351)[java] at org.apache.camel.impl.JndiRegistry.lookup(JndiRegistry.java:51)

那会是二个减轻起来比较复杂的主题材料,可是依旧有一点大概的标题会诱致“NoInitialContextException”
错误音讯的发出:应用程序或然未有正规的证书来创建连接。代码只怕未有承认JNDI 所须求的完成。InitialContext
类或然未有科学的品质来拓展安排。能够读一读这里关于在运行 Java
应用程序时“NoInitialContextException”
意味着的是何许的商讨。(@StackOverflow卡塔尔国47.
“NoSuchElementException”
“NoSuchElementException” 会在三个迭代
(举例三个 for 循环卡塔尔(قطر‎尝试去拜访已经未有了的下三个 成分时发生。

public class NoSuchElementExceptionDemo{ public static void main(String args[]) { Hashtable sampleMap = new Hashtable(); Enumeration enumeration = sampleMap.elements(); enumeration.nextElement(); //java.util.NoSuchElementExcepiton here because enumeration is empty }}Output:Exception in thread "main" java.util.NoSuchElementException: Hashtable Enumerator at java.util.Hashtable$EmptyEnumerator.nextElement(Hashtable.java:1084) at test.ExceptionTest.main(NoSuchElementExceptionDemo.java:23)

“NoSuchElementException”
能够被如下这几个主意抛出:Enumeration::nextElement(卡塔尔(قطر‎NamingEnumeration::next(卡塔尔StringTokenizer::nextElement(卡塔尔Iterator::next(卡塔尔国能够读一读那一个关于在
Java 软件中怎么着修复 “NoSuchElementException”的教程。(@javinpaulState of Qatar48.
“NoSuchFieldError”
该 Java
软件错误音信会在一个应用程序尝试去访问二个目的中的某些域,可是钦定域在类中冲消时产生(@sourceforge卡塔尔.

public NoSuchFieldError()

该错误日常会在编写翻译器中被擒获,但假若三个类的定义在编写翻译和平运动转时期被改变了话,也会被破获到。能够读一读这里关于在
Java
软件中什么寻觅是怎么着招致了“NoSuchFieldError”的评论。@StackOverflow49.
“NumberFormatException”
该 Java
软件错误消息会在应用程序尝试将三个字符串调换到三个数值类型,
而该数值并不是叁个可行的数字字符串时爆发(@alvinalexander卡塔尔国。

package com.devdaily.javasamples;public class ConvertStringToNumber { public static void main(String[] args) { try { String s = "FOOBAR"; int i = Integer.parseInt(s); // this line of code will never be reached System.out.println("int value = " + i); } catch (NumberFormatException nfe) { nfe.printStackTrace(); } }}

当存在如下境况时 “NumberFormatException”
会被抛出:数值中前边或后边的空格。符号不在数值的前边。数值有逗号。本地化逻辑或然不会将其识别为一个立见成效的数值。数值太大,给定的数值类型装不下。能够读一读这里关于在运营Java 软件时怎么制止“NumberFormatException”的座谈。(@StackOverflow卡塔尔国.50.
“TimeoutException”
该 Java
软件错误新闻会在有贰个围堵操作超时的时候发出:

private void queueObject(ComplexDataObject obj) throws TimeoutException, InterruptedException { if (!queue.offer(obj, 10, TimeUnit.SECONDS)) { TimeoutException ex = new TimeoutException("Timed out waiting for parsed elements to be processed. Aborting."); throw ex; }}

能够读一读这里关于在运作 Java 软件时怎么样处理“TimeoutException”的评论。(@StackOverflow卡塔尔(قطر‎.总结累加就那么些了!
假若您随即都在求学这一个,
就相应能够管理多数的周转时和编写翻译器错误以致那一个了。要不要把这两篇作品安妥保存起来或许增添到书签以便能神速地张开回想,敬随君意。而对付高档一点儿的
Java 开辟者工具,不忘记了足以下载《Java 开荒者综合指南》哦。引用原版的书文:50
Common Java Errors and How to Avoid Them (Part 2卡塔尔国翻译:leoxu

You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图