Created
May 23, 2017 07:46
-
-
Save fermopili/6c5cb481cf6f7b43f8a83170c3d4e46c to your computer and use it in GitHub Desktop.
com.javarush.task.task38.task3804 Фабрика исключений
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.javarush.task.task38.task3804; | |
public enum ExceptionApplicationMessage | |
{ | |
UNHANDLED_EXCEPTION, | |
SOCKET_IS_CLOSED | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.javarush.task.task38.task3804; | |
public enum ExceptionDBMessage { | |
NOT_ENOUGH_CONNECTIONS, | |
RESULT_HAS_NOT_GOTTEN_BECAUSE_OF_TIMEOUT | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.javarush.task.task38.task3804; | |
public enum ExceptionUserMessage { | |
USER_DOES_NOT_EXIST, | |
USER_DOES_NOT_HAVE_PERMISSIONS | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.javarush.task.task38.task3804; | |
/** | |
* Created by Administrator on 23.05.2017. | |
*/ | |
public class FactoryException | |
{ | |
static Throwable getException(Enum e) | |
{ | |
if (e == null) | |
return new IllegalArgumentException ( ); | |
String message = e.name ( ).charAt ( 0 ) + e.name ( ).substring ( 1 ).toLowerCase ( ).replace ( "_", " " ); | |
if (e instanceof ExceptionApplicationMessage) | |
return new Exception ( message ); | |
if (e instanceof ExceptionDBMessage) | |
return new RuntimeException ( message); | |
if (e instanceof ExceptionUserMessage) | |
return new Error (message ); | |
return new IllegalArgumentException ( ); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.javarush.task.task38.task3804; | |
/* | |
Фабрика исключений | |
*/ | |
public class Solution | |
{ | |
public static Class getFactoryClass() | |
{ | |
return FactoryException.class; | |
} | |
public static void main(String[] args) | |
{ | |
System.out.println ( Solution.getFactoryClass()); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
taskKey="com.javarush.task.task38.task3804" | |
Фабрика исключений | |
Создай класс - фабрику исключений, который содержит один статический метод, возвращающий нужное исключение. | |
Этот метод должен принимать один параметр - энум. | |
Если передан энум: | |
* ExceptionApplicationMessage, верни исключение Exception | |
* ExceptionDBMessage, верни исключение RuntimeException | |
* ExceptionUserMessage, верни Error | |
иначе верните IllegalArgumentException без сообщения. | |
В качестве сообщения (message) для каждого возвращаемого объекта используйте элементы энума, в которых все знаки | |
подчеркивания замените на пробелы. Сообщение должно быть в нижнем регистре за исключением первого символа. | |
Например, сообщение для ExceptionApplicationMessage.SOCKET_IS_CLOSED - "Socket is closed". | |
Верните класс созданной фабрики в методе Solution.getFactoryClass. | |
Энумы не меняй. | |
Требования: | |
1. Метод getFactoryClass должен возвращать фабрику исключений. | |
2. ExceptionApplicationMessage не должен содержать никакие дополнительные методов или конструкторы. | |
3. ExceptionDBMessage не должен содержать никакие дополнительные методов или конструкторы. | |
4. ExceptionUserMessage не должен содержать никакие дополнительные методов или конструкторы. | |
5. Статический метод фабрики исключений должен возвращать исключения перечисленные в условии (включая сообщение) для любых входящих параметров. | |
6. Фабрика должна иметь один метод и он должен быть статическим. | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment