Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
Geth-Modification
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
张蕾
Geth-Modification
Commits
d46c7bca
Commit
d46c7bca
authored
Feb 25, 2015
by
zelig
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
errs pkg for error code based errors
parent
52ccaa60
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
137 additions
and
0 deletions
+137
-0
errors.go
errs/errors.go
+91
-0
errors_test.go
errs/errors_test.go
+46
-0
No files found.
errs/errors.go
0 → 100644
View file @
d46c7bca
package
errs
import
(
"fmt"
"github.com/ethereum/go-ethereum/logger"
)
/*
Errors implements an error handler providing standardised errors for a package.
Fields:
Errors:
a map from error codes to description
Package:
name of the package/component
Level:
a function mapping error code to logger.LogLevel (severity)
if not given, errors default to logger.InfoLevel
*/
type
Errors
struct
{
Errors
map
[
int
]
string
Package
string
Level
func
(
code
int
)
logger
.
LogLevel
}
/*
Error implements the standard go error interface.
errors.New(code, format, params ...interface{})
Prints as:
[package] description: details
where details is fmt.Sprintf(self.format, self.params...)
*/
type
Error
struct
{
Code
int
Name
string
Package
string
level
logger
.
LogLevel
message
string
format
string
params
[]
interface
{}
}
func
(
self
*
Errors
)
New
(
code
int
,
format
string
,
params
...
interface
{})
*
Error
{
name
,
ok
:=
self
.
Errors
[
code
]
if
!
ok
{
panic
(
"invalid error code"
)
}
level
:=
logger
.
InfoLevel
if
self
.
Level
!=
nil
{
level
=
self
.
Level
(
code
)
}
return
&
Error
{
Code
:
code
,
Name
:
name
,
Package
:
self
.
Package
,
level
:
level
,
format
:
format
,
params
:
params
,
}
}
func
(
self
Error
)
Error
()
(
message
string
)
{
if
len
(
message
)
==
0
{
self
.
message
=
fmt
.
Sprintf
(
"[%s] %s"
,
self
.
Package
,
self
.
Name
)
if
self
.
format
!=
""
{
self
.
message
+=
": "
+
fmt
.
Sprintf
(
self
.
format
,
self
.
params
...
)
}
}
return
self
.
message
}
func
(
self
Error
)
Log
(
log
*
logger
.
Logger
)
{
log
.
Sendln
(
self
.
level
,
self
)
}
/*
err.Fatal() is true if err's severity level is 0 or 1 (logger.ErrorLevel or logger.Silence)
*/
func
(
self
*
Error
)
Fatal
()
(
fatal
bool
)
{
if
self
.
level
<
logger
.
WarnLevel
{
fatal
=
true
}
return
}
errs/errors_test.go
0 → 100644
View file @
d46c7bca
package
errs
import
(
"fmt"
"testing"
"github.com/ethereum/go-ethereum/logger"
)
func
testErrors
()
*
Errors
{
return
&
Errors
{
Package
:
"TEST"
,
Errors
:
map
[
int
]
string
{
0
:
"zero"
,
1
:
"one"
,
},
Level
:
func
(
i
int
)
(
l
logger
.
LogLevel
)
{
if
i
==
0
{
l
=
logger
.
ErrorLevel
}
else
{
l
=
logger
.
WarnLevel
}
return
},
}
}
func
TestErrorMessage
(
t
*
testing
.
T
)
{
err
:=
testErrors
()
.
New
(
0
,
"zero detail %v"
,
"available"
)
message
:=
fmt
.
Sprintf
(
"%v"
,
err
)
exp
:=
"[TEST] zero: zero detail available"
if
message
!=
exp
{
t
.
Errorf
(
"error message incorrect. expected %v, got %v"
,
exp
,
message
)
}
}
func
TestErrorSeverity
(
t
*
testing
.
T
)
{
err0
:=
testErrors
()
.
New
(
0
,
"zero detail"
)
if
!
err0
.
Fatal
()
{
t
.
Errorf
(
"error should be fatal"
)
}
err1
:=
testErrors
()
.
New
(
1
,
"one detail"
)
if
err1
.
Fatal
()
{
t
.
Errorf
(
"error should not be fatal"
)
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment