Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fermopili/6c5cb481cf6f7b43f8a83170c3d4e46c to your computer and use it in GitHub Desktop.
Save fermopili/6c5cb481cf6f7b43f8a83170c3d4e46c to your computer and use it in GitHub Desktop.
com.javarush.task.task38.task3804 Фабрика исключений
package com.javarush.task.task38.task3804;
public enum ExceptionApplicationMessage
{
UNHANDLED_EXCEPTION,
SOCKET_IS_CLOSED
}
package com.javarush.task.task38.task3804;
public enum ExceptionDBMessage {
NOT_ENOUGH_CONNECTIONS,
RESULT_HAS_NOT_GOTTEN_BECAUSE_OF_TIMEOUT
}
package com.javarush.task.task38.task3804;
public enum ExceptionUserMessage {
USER_DOES_NOT_EXIST,
USER_DOES_NOT_HAVE_PERMISSIONS
}
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 ( );
}
}
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());
}
}
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