Annotation Type ExceptionMetered


  • @Inherited
    @Documented
    @Retention(RUNTIME)
    @Target({TYPE,CONSTRUCTOR,METHOD,ANNOTATION_TYPE})
    public @interface ExceptionMetered
    An annotation for marking a method of an annotated object as metered.

    Given a method like this:

    
         @ExceptionMetered(name = "fancyName", cause=IllegalArgumentException.class)
         public String fancyName(String name) {
             return "Sir Captain " + name;
         }
     

    A meter for the defining class with the name fancyName will be created and each time the #fancyName(String) throws an exception of type cause (or a subclass), the meter will be marked.

    A name for the metric can be specified as an annotation parameter, otherwise, the metric will be named based on the method name.

    For instance, given a declaration of

    
         @ExceptionMetered
         public String fancyName(String name) {
             return "Sir Captain " + name;
         }
     

    A meter named fancyName.exceptions will be created and marked every time an exception is thrown.

    • Field Detail

      • DEFAULT_NAME_SUFFIX

        static final String DEFAULT_NAME_SUFFIX
        The default suffix for meter names.
    • Element Detail

      • name

        String name
        Returns:
        The name of the meter. If not specified, the meter will be given a name based on the method it decorates and the suffix "Exceptions".
        Default:
        ""
      • absolute

        boolean absolute
        Returns:
        If true, use the given name as an absolute name. If false, use the given name relative to the annotated class. When annotating a class, this must be false.
        Default:
        false
      • cause

        Class<? extends Throwable> cause
        Returns:
        The type of exceptions that the meter will catch and count.
        Default:
        java.lang.Exception.class