반응형
스택 추적을 잃지 않고 Java에서 예외를 다시 발생
C #에서는 throw;
스택 추적을 유지하면서 명령문을 사용하여 예외를 다시 발생 시킬 수 있습니다 .
try
{
...
}
catch (Exception e)
{
if (e is FooException)
throw;
}
Java에 이와 같은 것이 있습니까 ( 원래 스택 추적을 잃지 않습니다 )?
catch (WhateverException e) {
throw e;
}
단순히 잡은 예외를 다시 던질 것입니다 (분명히 주변 메소드는 서명 등을 통해 이것을 허용해야합니다). 예외는 원래 스택 추적을 유지합니다.
내가 선호하는:
try
{
...
}
catch (FooException fe){
throw fe;
}
catch (Exception e)
{
// Note: don't catch all exceptions like this unless you know what you
// are doing.
...
}
또한 예외를 다른 예외로 랩핑하고 원인 매개 변수로 예외를 Throwable로 전달하여 원래 스택 추적을 유지할 수 있습니다.
try
{
...
}
catch (Exception e)
{
throw new YourOwnException(e);
}
Java에서는 거의 동일합니다.
try
{
...
}
catch (Exception e)
{
if (e instanceof FooException)
throw e;
}
Java에서는 잡은 예외를 그냥 던지기 throw e
보다는 던져 버립니다 throw
. Java는 스택 추적을 유지 관리합니다.
이 같은
try
{
...
}
catch (FooException e)
{
throw e;
}
catch (Exception e)
{
...
}
public int read(byte[] a) throws IOException {
try {
return in.read(a);
} catch (final Throwable t) {
/* can do something here, like in=null; */
throw t;
}
}
이것은 메소드가를 던지는 구체적인 예 IOException
입니다. final
수단 t
에만 try 블록에서 던진 예외를 보유 할 수 있습니다. 추가 자료는 여기 및 여기 에서 찾을 수 있습니다 .
잡힌 excetion을 다른 예외로 랩핑하거나 (더 많은 정보를 제공하기 위해) 잡은 excetion을 다시 던지면 스택 추적이 보존됩니다.
try{ ... }catch (FooException e){ throw new BarException("Some usefull info", e); }
반응형
'Programing' 카테고리의 다른 글
@Before, @BeforeClass, @BeforeEach 및 @BeforeAll의 차이점 (0) | 2020.02.23 |
---|---|
div를 나머지 수평 공간으로 채우는 방법은 무엇입니까? (0) | 2020.02.23 |
컴퓨터 과학에서 NP-complete 란 무엇입니까? (0) | 2020.02.22 |
CSS를 통해 PNG 이미지의 색상을 변경 하시겠습니까? (0) | 2020.02.22 |
텍스트 파일 끝에 출력을 추가하는 방법 (0) | 2020.02.22 |