2015-11-26 1 views
2

Итак, я добавил этот образ, в надежде, что это поможет: Method exceptionВ чем заключается использование добавления исключения к методу глобального класса?

Мой вопрос: Какой смысл делать это? Я создал свой глобальный класс исключений (с моими собственными сообщениями), я поднял его в методе глобального класса, и я также поймал это исключение - и я сделал все это, не предоставив этому конкретному методу исключение, помочь каким-либо образом предоставить исключения для метода?

Короткое обновление, это мой метод Код: Method code

Коллега сказал мне, чтобы дать метод параметр исключения вместо того, чтобы писать код с картинки 2. Если я так, я не вижу изменения, и именно поэтому я не вижу смысла делать то, что находится в первой картине.

+0

Классические исключения и классы исключений, основанные на оо, не могут использоваться вместе во всех случаях параллельно. Вот почему я бы порекомендовал Твой путь. Тем не менее, вы поднимаете свое исключение и ловите его внутри одного метода. Это просто и на самом деле в этом нет необходимости (но с точки зрения распространения исключения вверх по стоп-казу, это имеет больше смысла). – icbytes

ответ

1

Это очень хороший вопрос. Из-за накладных расходов такие исключения создаются либо путем их создания, добавления их, привязки их к классу сообщений, так и для их броска/захвата, это действительно также для меня, кажется, иногда своего рода «стрельба ракетами у птиц». Большинство вещей действительно можно поймать, поймав CX_ROOT. Однако на самом деле есть случаи, когда важно провести различие между исключениями, и, следовательно, это хороший ООП стандарт для создания некоторых собственных, Если:

  • за исключением Тип класса/значение не может быть покрыта исключения для abap
  • класс исключения должен быть связан с собственными сообщениями класса сообщений
  • класс исключения должен предоставлять специальные функции, такие как «возобновляемый».

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

+0

Итак, я добавил больше контекста к вопросу. Надеюсь, это будет полезно. –

+1

-1. Захват CX_ROOT - действительно очень плохая идея. Вы закончите сглатывание ошибок, в которых у вас нет способа обработки, и, вероятно, подавления сообщений об ошибках и/или коротких дампов, которые вы действительно захотите. В случае серьезной несогласованности вы действительно хотите, чтобы ваша программа продолжалась так, как будто исключение (непредвиденное!) Никогда не происходило? – vwegert

+2

Vwegwert: Я не хотел проглатывать какие-либо исключения и/или ошибки. Я также вижу, что sap Standard часто ловит cx_root. На деле также можно отличить, какое это исключение, потому что вы можете определить его внутри улова. Как пункт дизайна программного обеспечения, я также ценю, а не сваливать. – icbytes

2

Чтобы обратиться к первоначальному вопросу: Добавление исключения в подписи вашего метод просто утверждает, что метод может выбросить это исключение (которое имеет смысл для динамически проверяемых исключений и требуется для статический проверяемых исключений, чтобы держать вещи просто). Это малопригодно для реализации метода (помимо того, что он делает исключение без ошибок), но это важное сообщение для вызывающего: если вы вызываете метод FOO, имейте в виду, что может произойти ZCX_BAR - справиться с ним или игнорируйте его на свой страх и риск.

+0

То есть, я имел в виду «точно определить другие мнения». Благодарю. Возможно, к этому могут присоединиться и другие люди. – icbytes

Смежные вопросы