Skip to content

Add missing throws documentation to rosbag_cpp writer open() #1788#1789

Open
gDorndorf wants to merge 3 commits intoros2:rollingfrom
gDorndorf:gdorndorf/writer_open_throw_documentation
Open

Add missing throws documentation to rosbag_cpp writer open() #1788#1789
gDorndorf wants to merge 3 commits intoros2:rollingfrom
gDorndorf:gdorndorf/writer_open_throw_documentation

Conversation

@gDorndorf
Copy link

@gDorndorf gDorndorf commented Aug 14, 2024

Closes #1788

Document that open() may throw.

Document that open() may throw.

Signed-off-by: Georg Dorndorf <georg.dorndorf@xtonomy.ai>
@gDorndorf gDorndorf requested a review from a team as a code owner August 14, 2024 10:14
@gDorndorf gDorndorf requested review from emersonknapp and james-rms and removed request for a team August 14, 2024 10:14
Comment on lines 80 to 85
* \throws runtime_error if
* database directory already exists,
* failed to create database directory,
* no storage could be initialized,
* invalid bag splitting size given,
* max cache size less or equal 0 when snapshot mode is enabled.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am not sure if we want to list the all possible exception here, but at least indent is needed as below.

Suggested change
* \throws runtime_error if
* database directory already exists,
* failed to create database directory,
* no storage could be initialized,
* invalid bag splitting size given,
* max cache size less or equal 0 when snapshot mode is enabled.
* \throws runtime_error if database directory already exists,
* failed to create database directory, no storage could be initialized,
* invalid bag splitting size given,
* max cache size less or equal 0 when snapshot mode is enabled.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree that introduces some maintenance hazard keeping doc and implementation in sync, but it could be practical to have it there.

I'd also be fine with just a hint at some general throw behavior here.
So I'd leave it up to any reviewer as I am not too familiar with the style use throughout the rest of the codebase.

gDorndorf and others added 2 commits August 19, 2024 09:50
Remove documentation of implementation specific throw behaviour

Co-authored-by: Tomoya Fujita <Tomoya.Fujita@sony.com>
Signed-off-by: Georg Dorndorf <georg.dorndorf@rwth-aachen.de>
Fix documentation intendation

Co-authored-by: Tomoya Fujita <Tomoya.Fujita@sony.com>
Signed-off-by: Georg Dorndorf <georg.dorndorf@rwth-aachen.de>
Copy link
Contributor

@MichaelOrlov MichaelOrlov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@gDorndorf Thanks for PR and attempt to make our Rosbag2 better.
However, in this particular case documenting about possible throwing exceptions is not trivial. Because this is an upper rosbag2_cpp layer API which is calling storage plugin API inside.
Each storage plugin may throw or not and what type of exceptions it throws and in what cases are implementation details for concrete storage plugin.

What we can do is make some notes that certain functions may throw if the underlying rosbag2_storage plugin API also throws.
Update: we can be more specific and refer to the concrete storage_plugin API interface.

@emersonknapp
Copy link
Collaborator

Possibly a better API would be a no-throw bool API instead of void. The Writer itself does not throw any exceptions from its own code, but it does have the ability to catch them when making unsafe calls to the implementations

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Missing "throws" documentation in rosbag2_cpp writer open()

4 participants