/* * Copyright (c) 2022 tursom. All rights reserved. * Use of this source code is governed by a GPL-3 * license that can be found in the LICENSE file. */ package lang type ExceptionConfig struct { SkipStack int GetStackTrace bool Cause any ExceptionName string } func Cfg() *ExceptionConfig { return DefaultExceptionConfig() } func DefaultExceptionConfig() *ExceptionConfig { return &ExceptionConfig{ SkipStack: 0, GetStackTrace: true, Cause: nil, } } func (c *ExceptionConfig) SetSkipStack(skipStack int) *ExceptionConfig { if c == nil { return &ExceptionConfig{SkipStack: skipStack, GetStackTrace: true} } c.SkipStack = skipStack return c } func (c *ExceptionConfig) SetGetStackTrace(getStackTrace bool) *ExceptionConfig { if c == nil { return &ExceptionConfig{GetStackTrace: getStackTrace} } c.GetStackTrace = getStackTrace return c } func (c *ExceptionConfig) SetCause(cause any) *ExceptionConfig { if c == nil { return &ExceptionConfig{Cause: cause, GetStackTrace: true} } c.Cause = cause return c } func (c *ExceptionConfig) AddSkipStack(skipStack int) *ExceptionConfig { if c == nil { return &ExceptionConfig{SkipStack: skipStack, GetStackTrace: true} } c.SkipStack += skipStack return c } func (c *ExceptionConfig) SetExceptionName(exceptionName string) *ExceptionConfig { if c == nil { return &ExceptionConfig{ExceptionName: exceptionName, GetStackTrace: true} } c.ExceptionName = exceptionName return c }