Exception Flashcards

1
Q

Что такое Исключение

A

то проблема(ошибка) возникающая во время выполнения программы. Исключения могут возникать во многих случаях, например:

Пользователь ввел некорректные данные.
Файл, к которому обращается программа, не найден.
Сетевое соединение с сервером было утеряно во время передачи данных. И т.д.
Все исключения в Java являются объектами. Поэтому они могут порождаться не только автоматически при возникновении исключительной ситуации, но и создаваться самим разработчиком.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

иерархия исключений.

A

Trowable - Error, Exception
Error(uncheked) - VirtualMachineError, TreadDeath
VitualMachineError -OutOfMemoryError,StackOverFlow,Unknown
Exception - RuntimeException, ReflectiveOperationException,SQLException,IOException
RuntimeException()uncheked - выход за границы массива, деление на ноль, nullPointerException, IllegalArgumentException
ReflectiveOperationException - нет поля, нет метода, нет класса

Наличие\обработка Checked исключения проверяются на этапе компиляции. Наличие\обработка Unchecked исключения происходит на этапе выполнения.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Можно/нужно ли обрабатывать ошибки jvm?

A

Обрабатывать можно, но делать этого не стоит. Разработчику не предоставлены инструменты для обработки ошибок системы и виртуальной машины.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

. Какие существуют способы обработки исключений?

A
try{ 
} 
catch(SomeException e ){ 
} 
finally{ 
//выполняется в любом случае ( блок finally  не обязателен) 
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

throw и throws

A

throw — служит для генерации исключений.
throws — ключевое слово, которое прописывается в сигнатуре метода, и обозначающее что метод потенциально может выбросить исключение с указанным типом.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Может ли не быть ни одного блока catch при отлавливании исключений?

A

Такая запись допустима, если имеется связка try{} finally {}. Но смысла в такой записи не так много, всё же лучше иметь блок catch в котором будет обрабатываться необходимое исключение.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Могли бы вы придумать ситуацию, когда блок finally не будет выполнен?

A

Да, выход из программы в в блоке try{…}

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Как написать собственное (“пользовательское”) исключение? Какими мотивами вы будете руководствоваться при выборе типа исключения: checked/unchecked?

A
public class ExcClass extends Exception {
     private String someString;
     public ExcClass (String string) {
        this.someString = string;
        System.out.println("Exception ExcClass");
    }
     public void myOwnExceptionMsg() {
        System.err.println("This is exception massage for string: " + someString);
    }
}

Руководствоваться нужно определением типа исключения. В зависимости от того, что вы хотите обрабатывать или видеть нужно и наследоваться от нужного класса.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q
  1. Может ли метод main выбросить исключение во вне и если да, то где будет происходить обработка данного исключения?
A

Может и оно будет передано в виртуальную машину Java (JVM).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Если оператор return содержится и в блоке catch и в finally, какой из них “главнее”?

A

Вернется из блока finally.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

OutOfMemoryError?

A

OutOfMemoryError выбрасывается, когда виртуальная машина Java не может выделить (разместить) объект из-за нехватки памяти, а сборщик мусора не может высвободить ещё.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

OutOfMemoryError: Java heap space

A

Не хватает места в куче, а именно, в области памяти в которую помещаются объекты, создаваемые программно в вашем приложении. Размер задается параметрами -Xms и -Xmx. Если вы пытаетесь создать объект, а места в куче не осталось, то получаете эту ошибку. Обычно проблема кроется в утечке памяти, коих бывает великое множество, и интернет просто пестрит статьями на эту тему.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

java.lang.OutOfMemoryError: PermGen space

A

Данная ошибка возникает при нехватке места в Permanent области, размер которой задается параметрами -XX:PermSize и -XX:MaxPermSize.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

java.lang.OutOfMemoryError: GC overhead limit exceeded

A

Данная ошибка может возникнуть как при переполнении первой, так и второй областей. Связана она с тем, что памяти осталось мало и GC постоянно работает, пытаясь высвободить немного места. Данную ошибку можно отключить с помощью параметра -XX:-UseGCOverheadLimit, но, конечно же, её надо не отключать, а либо решать проблему утечки памяти, либо выделять больше объема, либо менять настройки GC.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

java.lang.OutOfMemoryError: unable to create new native thread

A

Выбрасывается, когда нет возможности создать еще потоки.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

SQLException

A

SQLException предоставляет информацию об ошибках доступа к базе данных или других ошибках связанных с работой с базами данных.

SQLException относится к checked исключениям, а значит проверяется на этапе компиляции.

Споры об этом типе исключения идут о том, что разработчику приходится постоянно обрабатывать это исключение в коде,

17
Q

Error

A

Ошибки (Errors) представляют собой более серьёзные проблемы, которые, согласно спецификации Java, не следует пытаться обрабатывать в собственной программе, поскольку они связаны с проблемами уровня JVM

18
Q

Что если В блоке finally возникло исключение.

A

ничего.

19
Q

Всегда ли выполняеться код в блоке finally?

A

нет.

  1. В потоке демоне может не выполняться
  2. System.exit(0)
  3. Если в finally прошло исключение у которого нет обработчика