异常消息为空?

Arc*_*rci 33 java android exception-handling exception

try-catch我的代码中有一个声明.在我的catch块中,我打电话e.getMessage()来打印异常消息.但是,e.getMessage保持返回空值.有趣的是,当我打电话给e.printStackTrace,我打印堆栈跟踪没有问题.

以下是我的代码:

try
{
    console = new BufferedReader(new InputStreamReader(httpsURLConnection.getInputStream()));
}catch(Exception e)
{
    Log.d("Error", "Error Message: " + e.getMessage()); //e.getMessage is returning a null value
    e.printStackTrace(); //this works. is displaying a SocketTimeOutException
}
Run Code Online (Sandbox Code Playgroud)

可能是我的问题的原因是什么?我该如何解决?

kos*_*tja 21

消息和堆栈跟踪是两个不同的信息.虽然stackstrace是必需的,但消息却不是.大多数异常带有一条消息,这是最好的做法,但有些只是没有,并且没有什么可以解决的.

您可以使客户端更容易,并通过包装无消息异常或以原始异常作为原因抛出自定义异常来提供消息.这可能如下所示.

throw new  MyRuntimeException("Socket was closed unexpectedly", e);
Run Code Online (Sandbox Code Playgroud)


JB *_*zet 9

SocketTimeOutException是异常的类型.可能只是这个异常(或抛出它的代码)没有提供带有异常的消息,并认为异常的类型足够有意义.使用

Log.d("Error", "Error Message: " + e);
Run Code Online (Sandbox Code Playgroud)

要么

Log.d("Error", "Some exception occurred", e);
Run Code Online (Sandbox Code Playgroud)

而不是问消息.